Условные типы в TypeScript: реализация generic‑условия

Используйте conditional type: C extends true ? Then : Else. Ограничение C extends boolean задаёт допустимый параметр условия.

Короткий ответ

Что ответить на собеседовании

Используйте 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].

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее