Напиши тип Middle Условные и mapped-типы обновлено
infer последнего элемента кортежа
Вопрос
Какой тип получится? Впишите тип.
type Last<T extends unknown[]> = T extends [...unknown[], infer L] ? L : never;
type X = Last<[1, 'a', true]>; // /* ? */
Попробуйте сами
Напишите тип, как написали бы в коде.
Показать ответ и разбор
Коротко
Правильный тип: true. Вариативные кортежи (TS 4.0+) позволяют ставить rest-элемент в начало: [...unknown[], infer L] сопоставляется с последним элементом.
Правильный тип
true
Разбор
Вариативные кортежи (TS 4.0+) позволяют ставить rest-элемент в начало: [...unknown[], infer L] сопоставляется с последним элементом. Для пустого кортежа шаблон не совпадёт, и результат never.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Только строковые ключи через Extract
Следующий вопрос
Снятие readonly и ? в mapped-типе