Saltar al contenido
webtype.orgwebtype.org

    ↑↓ mover · ⏎ abrir · esc cerrar

    N.º 234 · 17 de agosto de 2026 · Suave

    TuplaAUnión

    Implementa TupleToUnion<T> para que convierta una tupla en la unión de los tipos de sus elementos. Todo es un único acceso indexado.

    01

    Intenta el puzle tú mismo

    Par 2

    Puzle

    tuple-to-union.ts
    Intento 1 de 2Aún sin comprobar

    Sustituye ??? — tu solución se comprueba con los casos de abajo. Tab indenta; pulsa Escape y luego Tab para sacar el foco.

    Comprobaciones

    3
    • TupleToUnion<[1, 2, 3]>—
      → 1 | 2 | 3
    • TupleToUnion<['a']>—
      → 'a'
    • TupleToUnion<[]>—
      → never

    Cómo se juzga una comprobación Igualdad exacta de tipos, no asignabilidad — una intersección no es lo mismo que el objeto aplanado.

    Cómo le fue a todo el mundo

    Menos de 5 personas han resuelto este puzle hasta ahora. La distribución aparece cuando la muestra sea lo bastante grande como para significar algo.

    Juego corto

    Menos caracteres

    Aún no hay marcas públicas.

    Archivo
    02

    Solución comentada

    Publicado el 18 de agosto de 2026

    La 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

    1. 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.

    2. 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.

    Usa