Используйте conditional type: C extends true ? Then : Else. Ограничение C extends boolean задаёт допустимый параметр условия.
Условные типы в TypeScript: реализация generic‑условия
Используйте conditional type: C extends true ? Then : Else. Ограничение C extends boolean задаёт допустимый параметр условия.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Реализуйте условный тип в TypeScript, который выбирает один из двух вариантов в зависимости от булевого параметра.
type TrueResult = If<true, 'a', 'b'> // expected to be 'a'
type FalseResult = If<false, 'a', 'b'> // expected to be 'b'
Ответ
Используйте conditional type: C extends true ? Then : Else. Ограничение C extends boolean задаёт допустимый параметр условия.
type If<C extends boolean, Then, Else> = C extends true ? Then : Else;
type TrueResult = If<true, 'a', 'b'>;
type FalseResult = If<false, 'a', 'b'>;
Литералы true/false выбирают одну ветвь. При C=boolean получается объединение обеих ветвей из-за распределения по union; для нераспределяющего варианта применяют обёртку [C] extends [true].