Перейти к основному содержимому
Об авторе
Проекты
Знания
Знания/TypeScript/union-to-intersection

Как работает паттерн `UnionToIntersection` в TypeScript?

УглублённыйПродвинутые типыПаттерны типизации
type UnionToIntersection<U> = 
  (U extends any ? (x: U) => void : never) extends 
  (x: infer I) => void ? I : never;
  • Использует контравариантность параметров функций
  • Дистрибутивно создаёт union функций: ((x: A) => void) | ((x: B) => void)
  • infer в контравариантной позиции извлекает intersection: A & B
  • Применение: слияние типов, превращение union в объединённый объект
  • Главная
  • Об авторе
  • Проекты
  • Знания
Логотип nKolmykov