Напиши тип Senior Условные и mapped-типы обновлено
Условный тип без распределения
Вопрос
Какой тип получится? Впишите тип.
type ToArr<T> = [T] extends [unknown] ? T[] : never;
type A = ToArr<string | number>; // /* ? */
Попробуйте сами
Напишите тип, как написали бы в коде.
Показать ответ и разбор
Коротко
Правильный тип: (string | number)[]. Условный тип распределяется по объединению, только если проверяемый тип это «голый» параметр (T extends ...).
Правильный тип
(string | number)[]
Разбор
Условный тип распределяется по объединению, только если проверяемый тип это «голый» параметр (T extends ...). Обёртка в кортеж [T] отключает распределение: string | number проверяется целиком, и результат один массив (string | number)[]. С распределением было бы string[] | number[].
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.