Saltar al contenido
webtype.orgwebtype.org

    ↑↓ mover · ⏎ abrir · esc cerrar

    N.º 227 · 4 de agosto de 2026 · Media

    Incluye

    Implementa Includes<T, U> para que indique si la tupla T contiene exactamente el tipo U. boolean no cuenta como contener true — la coincidencia debe ser exacta. Equal del harness está disponible.

    01

    Intenta el puzle tú mismo

    Par 3

    Puzle

    includes-tuple.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
    • Includes<[1, 2, 3], 2>—
      → true
    • Includes<[1, 2, 3], 4>—
      → false
    • Includes<[], 1>—
      → false
    • Includes<[boolean], true>—
      → false

    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 5 de agosto de 2026

    La solución

    type Includes<T extends readonly unknown[], U> =
      T extends readonly [infer H, ...infer R]
        ? Equal<H, U> extends true
          ? true
          : Includes<R, U>
        : false

    El error más común

    type Includes<T extends readonly unknown[], U> =
      U extends T[number] ? true : false

    Corto y equivocado. T[number] es la unión de tipos de elemento y extends pregunta por asignabilidad, así que Includes<[boolean], true> responde true — true es asignable a boolean aunque la tupla no contenga tal elemento. Asignabilidad no es pertenencia.

    Línea por línea

    1. Equal<H, U> extends true

      Equal devuelve el tipo true o el tipo false, así que hay que probarlo con extends true en lugar de usarlo directamente como condición. Este es el puzle donde el propio harness se convierte en herramienta.

    2. : false

      Llegar a la tupla vacía significa que se comprobaron todos los elementos y ninguno coincidió. Agotar la lista *es* la respuesta negativa.

    Para recordar

    Cuando un puzle dice «exactamente», extends es la herramienta equivocada — comprueba asignabilidad, que es unidireccional. La identidad exacta necesita Equal, y por eso toda comprobación de este sitio se apoya en él.

    Usa