Что такое Conditional Types

Ответ

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-типов
  • Могут быть рекурсивными