Ответ
Conditional Types в TypeScript позволяют создавать типы, которые зависят от условий. Они используют синтаксис T extends U ? X : Y
, где проверяется, соответствует ли тип T
типу U
, и в зависимости от результата выбирается тип X
или Y
.
Пример:
type IsString<T> = T extends string ? true : false;
type A = IsString<'hello'>; // true
type B = IsString<42>; // false
Используются часто с infer
для извлечения типов:
type UnpackPromise<T> = T extends Promise<infer U> ? U : T;
type C = UnpackPromise<Promise<number>>; // number
type D = UnpackPromise<string>; // string
Особенности:
- Работают на уровне типов, не влияют на runtime
- Полезны для сложных generic-типов
- Могут быть рекурсивными