Rozwiązanie z komentarzem
Opublikowano 18 sierpnia 2026Rozwiązanie
type TupleToUnion<T extends readonly unknown[]> = T[number]Najczęstsza błędna odpowiedź
type TupleToUnion<T extends readonly unknown[]> = T extends readonly [infer H, ...infer R] ? H : never
Rozsądny odruch — rozłóż i weź głowę — ale na tym się kończy i zwraca tylko pierwszy element. Rekurencja i złączenie wyników zadziałałyby, tyle że to droga okrężna: T[number] robi to od razu.
Linia po linii
T[number]Dostęp indeksowany, którego kluczem jest cały typ
number. Skoro każdy poprawny indeks liczbowy wybiera jeden element, zapytanie o wszystkie naraz daje unię typów wszystkich elementów.TupleToUnion<[]>Pusta krotka nie ma żadnego poprawnego indeksu liczbowego, więc wraca unia zera rzeczy — a unia niczego to
never.
Do zapamiętania
Sięgaj po rekurencję dopiero wtedy, gdy indeksowanie nie wyraża pytania. T[number], keyof T i T[keyof T] odpowiadają na zaskakująco dużą część problemów z krotkami i obiektami w jednej linii.

