Saltar al contenido
webtype.orgwebtype.org

    ↑↓ mover · ⏎ abrir · esc cerrar

    N.º 255 · 7 de septiembre de 2026 · Suave

    Primero

    Implementa First<T> para que produzca el tipo del primer elemento de la tupla T, o never cuando T está vacía.

    01

    Intenta el puzle tú mismo

    Par 2

    Puzle

    head-tuple.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
    • First<[1, 2, 3]>—
      → 1
    • First<[]>—
      → never
    • First<[string]>—
      → string

    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 8 de septiembre de 2026

    La solución

    type First<T extends readonly unknown[]> = T extends [infer H, ...unknown[]] ? H : never

    El error más común

    type First<T extends readonly unknown[]> = T extends [infer H] ? H : never

    Un patrón de un elemento coincide con tuplas de un elemento y con nada más. First<[string]> funciona, First<[1, 2, 3]> cae directo a never, y el puzle parece medio resuelto porque una comprobación pasa. El patrón tiene que decir «y luego cualquier cosa».

    Línea por línea

    1. [infer H, ...unknown[]]

      El resto se expande como unknown[] en vez de inferirse, porque aquí nada lo necesita. Nombrar lo que no vas a usar es la forma más común de que estos patrones se vuelvan más difíciles de leer de lo que son.

    2. : never

      never es la respuesta honesta a «no existe tal elemento» — no undefined, que afirmaría que el elemento existe y que falta su valor.

    Para recordar

    Los patrones de tupla son exactos. [H] significa «una tupla de longitud uno», y si querías decir «al menos uno» tienes que escribir el resto.

    Usa