Rozwiązanie z komentarzem
Opublikowano 30 września 2026Rozwiązanie
type IsUnion<T, Whole = T> = [T] extends [never] ? false : T extends Whole ? [Whole] extends [T] ? false : true : never
Najczęstsza błędna odpowiedź
type IsUnion<T, Whole = T> = T extends Whole ? [Whole] extends [T] ? false : true : neverObsługuje zwykłe typy i unie, ale nagi warunek dla never wykonuje się zero razy i zwraca never. Tylko jawny opakowany warunek ma szansę nazwać go false.
Linia po linii
[Whole] extends [T]W rozdzielonej gałęzi
Tjest jednym składnikiem, aWholenadal trzyma pierwotną unię. Opakowane porównanie wykrywa różnicę bez ponownego rozdzielania.
Do zapamiętania
Wykrywanie unii polega na porównaniu jednego rozdzielonego składnika z zachowaną całością; never potrzebuje osobnej ochrony, bo nie tworzy żadnych składników.

