Выбор ответа Middle Задачи на типы обновлено
Last от пустого кортежа
Вопрос
Какой тип у X?
type Last<T extends unknown[]> = T extends [...unknown[], infer L] ? L : never;
type X = Last<[]>;
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: never. Пустой кортеж не сопоставляется с образцом [...unknown[], infer L]: последнего элемента нет, L захватить нечего.
Варианты ответа
undefinedneverправильный ответunknown[]
Разбор
Пустой кортеж не сопоставляется с образцом [...unknown[], infer L]: последнего элемента нет, L захватить нечего. Срабатывает ветка never.
undefined это значение arr[arr.length - 1] в рантайме, но тип строится по образцу, а не по поведению JS. unknown и [] не стоят ни в одной ветке.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.