Saltar al contenido
webtype.orgwebtype.org#218 last-element · par 3

    ↑↓ mover · ⏎ abrir · esc cerrar

    N.º 218 · 26 de julio de 2026 · Media

    Último

    Implementa `Last<T>` para que devuelva el tipo del último elemento de una tupla. Una tupla vacía no tiene último elemento — devuelve `never`.

    01

    Intenta el puzle tú mismo

    Par 3

    Puzle

    last-element.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

    4
    • Last<[1, 2, 3]>
      3
    • Last<['only']>
      'only'
    • Last<[]>
      never
    • Last<[string, number]>
      number

    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 27 de julio de 2026

    La solución

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

    El error más común

    type Last<T extends readonly unknown[]> = T[number]

    Indexar una tupla con `number` da la unión de *todos* los tipos de elemento, así que `[1, 2, 3]` produce `1 | 2 | 3`. La información de posición se pierde en cuanto indexas así.

    Línea por línea

    1. [...unknown[], infer L]

      Un patrón de tupla admite exactamente un elemento rest, y puede ir al principio. Frente a una tupla de longitud fija, el rest absorbe todo salvo la última posición, que se liga a `L`.

    2. : never

      La tupla vacía no encaja — no hay última posición que ligar — así que la rama falsa responde con el tipo que no tiene valores.

    Para recordar

    Un elemento rest en un patrón de tupla no tiene por qué ir al final. Los rest iniciales son la forma de llegar al final de una tupla sin contar.

    Usa