TypeScript · Senior · Frage 25 von 75
Wie funktioniert der Trick UnionToIntersection?
type UnionToIntersection<U> =
(U extends any ? (x: U) => void : never) extends (x: infer I) => void
? I : never;- 1Inferenz aus einer kontravarianten Position ergibt eine Intersection
- 2Der Compiler ersetzt
|durch&nach einer Regel für diesen Namen - 3Er funktioniert nicht - aus einer Union lässt sich keine Intersection ableiten
Antwort zeigen
Richtige Antwort: Inferenz aus einer kontravarianten Position ergibt eine Intersection
Erklärung
Zuerst wird die Union in eine Union von Funktionen (x: A) => void | (x: B) => void verteilt. Beim Ableiten von I aus der (kontravarianten) Parameterposition werden mehrere Kandidaten dann zu einer Intersection verbunden: A & B. Ein Lehrbuchbeispiel für Programmierung auf Typebene.