Solución comentada
Publicado el 18 de agosto de 2026La solución
type TupleToUnion<T extends readonly unknown[]> = T[number]
El error más común
type TupleToUnion<T extends readonly unknown[]> = T extends readonly [infer H, ...infer R] ? H : never
Un instinto razonable — desestructurar y tomar la cabeza — pero se queda ahí y devuelve solo el primer elemento. Recurrir y unir los resultados funcionaría, y es justo el camino largo: `T[number]` ya lo hace.
Línea por línea
T[number]Un acceso indexado cuya clave es el tipo `number` completo. Como cada índice numérico válido selecciona un elemento, pedirlos todos a la vez produce la unión de todos los tipos de elemento.
TupleToUnion<[]>La tupla vacía no tiene ningún índice numérico válido, así que vuelve la unión de cero cosas — y la unión de nada es `never`.
Para recordar
Recurre a la recursión solo cuando indexar no pueda expresar la pregunta. `T[number]`, `keyof T` y `T[keyof T]` responden a una parte sorprendente de los problemas de tuplas y objetos en una sola línea.