Saltar al contenido
#243 absolute-value · par 3

    ↑↓ mover · ⏎ abrir · esc cerrar

    N.º 243 · 26 de agosto de 2026 · Media

    Valor absoluto

    Implementa `Absolute<N>` para que devuelva la magnitud de un literal numérico como **cadena**. No hay negación a nivel de tipos — hay que quitar el signo como texto.

    01

    Intenta el puzle tú mismo

    Par 3

    Puzle

    absolute-value.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
    • Absolute<-5>
      '5'
    • Absolute<5>
      '5'
    • Absolute<0>
      '0'
    • Absolute<-100>
      '100'

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

    La solución

    type Absolute<N extends number> = `${N}` extends `-${infer R}`
      ? R
      : `${N}`

    El error más común

    type Absolute<N extends number> = N extends `-${infer R}` ? R : `${N}`

    El patrón es correcto pero el sujeto es del tipo equivocado. `-5` es un literal numérico, y un literal numérico nunca encaja con un patrón de literal de plantilla, así que el condicional siempre es falso y toda entrada cae en `${N}` — devolviendo `"-5"` sin cambios.

    Línea por línea

    1. `${N}`

      Interpolar un número en un literal de plantilla por lo demás vacío es el equivalente a nivel de tipos de `String(n)`. `-5` se convierte en el literal de cadena `"-5"`, contra el que los patrones ya pueden emparejar.

    2. `-${infer R}`

      El menos se empareja literalmente y `R` liga todo lo que sigue. Los números positivos simplemente no encajan con este patrón y toman la rama falsa, así que no hace falta una prueba de signo aparte.

    Para recordar

    El nivel de tipos no tiene aritmética, pero tiene texto. Convertir un número en cadena transforma los problemas numéricos en problemas de emparejamiento — y así funcionan los trucos habituales para el valor absoluto, contar dígitos y comparar signos.

    Usa