Выбор ответа Middle Задачи на типы обновлено

Last от пустого кортежа

Вопрос

Какой тип у X?

type Last<T extends unknown[]> = T extends [...unknown[], infer L] ? L : never;
type X = Last<[]>;

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: never. Пустой кортеж не сопоставляется с образцом [...unknown[], infer L]: последнего элемента нет, L захватить нечего.

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

  1. undefined
  2. neverправильный ответ
  3. unknown
  4. []

Разбор

Пустой кортеж не сопоставляется с образцом [...unknown[], infer L]: последнего элемента нет, L захватить нечего. Срабатывает ветка never.

undefined это значение arr[arr.length - 1] в рантайме, но тип строится по образцу, а не по поведению JS. unknown и [] не стоят ни в одной ветке.

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

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