Saltar al contenido
webtype.orgwebtype.org

    ↑↓ mover · ⏎ abrir · esc cerrar

    N.º 276 · 28 de septiembre de 2026 · Suave

    If a nivel de tipos

    Implementa If<Condition, Then, Else> para que la condición booleana literal elija exactamente una rama.

    01

    Intenta el puzle tú mismo

    Par 2

    Puzle

    type-level-if.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
    • If<true, 'yes', 'no'>—
      → 'yes'
    • If<false, 'yes', 'no'>—
      → 'no'
    • If<true, 1, never>—
      → 1

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

    La solución

    type If<Condition extends boolean, Then, Else> = Condition extends true ? Then : Else

    El error más común

    type If<Condition extends boolean, Then, Else> = boolean extends Condition ? Then : Else

    La asignabilidad tiene dirección. boolean no es asignable al literal más estrecho true, así que invertir la pregunta elige la rama equivocada.

    Línea por línea

    1. Condition extends true ? Then : Else

      Con una condición literal la comprobación tiene una sola respuesta, así que sobrevive una única rama.

    Para recordar

    Un tipo condicional es un if cuya pregunta es la asignabilidad, y la dirección de izquierda a derecha forma parte del significado.

    Usa