Saltar al contenido
webtype.orgTemplate literal types

    ↑↓ mover · ⏎ abrir · esc cerrar

    Construcciones

    Template literal types

    Interpolación de cadenas a nivel de tipos — y, leída al revés, encaje de patrones sobre cadenas.

    Qué es

    Construir cadenas es la mitad obvia. La mitad que importa es que la misma sintaxis funciona en una cláusula `extends` con `infer`, lo que convierte una plantilla en un analizador: `S extends \`${infer Head}.${infer Rest}\`` corta en el primer punto. Todo tipo de ruta y todo conversor de caja del archivo es esa única idea repetida.

    Ejemplos

    • Handler<AppEvent>
      "onClick" | "onFocus"
    • Split<'a.b'>
      ["a", "b"]

      Encaje desde la izquierda, el más corto primero — así `H` es un segmento y `R` todo lo que sigue.

    • Split<'plain'>
      ["plain"]

    Cada tipo resuelto de arriba lo imprimió TypeScript 5.9.3, no se escribió a mano.

    Lo que no hace

    • No puede encajar de forma voraz ni hacia atrás. La inferencia toma siempre la coincidencia más corta desde la izquierda, así que cortar por el *último* separador necesita recursión, no un patrón más listo.
    • No se mantiene finito gratis. Interpolar dos uniones las multiplica, y unas pocas uniones de pocos miembros superarán el límite del compilador sobre el tamaño de una unión.

    Conclusión

    Una plantilla en posición de tipo construye; la misma plantilla en una cláusula `extends` desarma. Aprender a leerlas en el segundo sentido es lo que lo desbloquea.