TypeScript · Senior · Pytanie 25 z 75
Jak działa trik UnionToIntersection?
type UnionToIntersection<U> =
(U extends any ? (x: U) => void : never) extends (x: infer I) => void
? I : never;- ✓Poprawna odpowiedź: Wnioskowanie z kontrawariantnej pozycji parametru łączy kandydatów w przecięcie
- 2Kompilator po prostu zamienia
|na&specjalną regułą dla tej nazwy - 3To nie działa - z unii nie da się wyprowadzić przecięcia
Wyjaśnienie
Najpierw unia rozkłada się na unię funkcji (x: A) => void | (x: B) => void. Potem przy wnioskowaniu I z (kontrawariantnej) pozycji parametru wielu kandydatów łączy się w przecięcie: A & B. To podręcznikowy przykład programowania na poziomie typów.