Saltar al contenido
webtype.orgwebtype.org

    ↑↓ mover · ⏎ abrir · esc cerrar

    N.º 264 · 16 de septiembre de 2026 · Media

    Todo menos el primero

    Implementa Tail<T> para que produzca la tupla T sin su primer elemento. Una tupla vacía sigue vacía.

    01

    Intenta el puzle tú mismo

    Par 3

    Puzle

    drop-first.ts
    Intento 1 de 3Aú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
    • Tail<[1, 2, 3]>—
      → [2, 3]
    • Tail<[1]>—
      → []
    • Tail<[]>—
      → []

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

    La solución

    type Tail<T extends readonly unknown[]> = T extends [unknown, ...infer R] ? R : []

    El error más común

    type Tail<T extends readonly unknown[]> = T extends [unknown, infer R] ? R : []

    Sin el spread, [unknown, infer R] describe una tupla de exactamente dos elementos y R es el segundo *elemento*, no el resto de la tupla. Tail<[1, 2, 3]> no coincide con nada y cae a []; Tail<[1, 2]> devolvería 2 — un número donde se esperaba una tupla.

    Línea por línea

    1. [unknown, ...infer R]

      unknown en la posición de cabeza empareja cualquier elemento sin nombrarlo, y el spread hace que R sea el resto, sea cual sea su longitud.

    2. : []

      La tupla vacía no tiene cabeza que quitar, así que nunca coincide con el patrón y responde por ella la rama de reserva. Quitar nada de nada sigue siendo nada.

    Para recordar

    Un spread en un patrón de tupla es la diferencia entre «el siguiente» y «todos los demás». Omitirlo cambia en silencio con qué llega siquiera a coincidir tu patrón.

    Usa