Выбор ответа 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.

Варианты ответа

  1. A: 3, B: never
  2. A: 3, B: 3
  3. A: 3, B: numberправильный ответ
  4. A: number, B: number

Разбор

У кортежа длина известна при компиляции, поэтому ['length'] даёт литерал 3. У массива string[] длина любая, и тип length это number.

На этом построена арифметика на типах: число представляют длиной кортежа. never тут не возникает, а number для кортежа был бы, только если бы он стал обычным массивом.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.