Выбор ответа Junior Задачи на типы обновлено
Длина кортежа и массива
Вопрос
Какие типы у A и B?
type Length<T extends readonly unknown[]> = T['length'];
type A = Length<[1, 2, 3]>;
type B = Length<string[]>;
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: A: 3, B: number. У кортежа длина известна при компиляции, поэтому ['length'] даёт литерал 3.
Варианты ответа
A: 3,B: neverA: 3,B: 3A: 3,B: numberправильный ответA: number,B: number
Разбор
У кортежа длина известна при компиляции, поэтому ['length'] даёт литерал 3. У массива string[] длина любая, и тип length это number.
На этом построена арифметика на типах: число представляют длиной кортежа. never тут не возникает, а number для кортежа был бы, только если бы он стал обычным массивом.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.