TypeScript · Senior · Запитання 25 з 75

Як працює трюк UnionToIntersection?

type UnionToIntersection<U> =
  (U extends any ? (x: U) => void : never) extends (x: infer I) => void
    ? I : never;

Пояснення

Спершу union розподіляється в union функцій (x: A) => void | (x: B) => void. Потім під час виведення I з позиції параметра (контраваріантної) кілька кандидатів об'єднуються через перетин: A & B. Це хрестоматійний приклад type-level програмування.

Де почитати

Помилка в запитанні

TypeScript · Senior · запитання 25

Перевірте себе

Пройдіть тест TypeScript · Senior: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест