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í
Hes un segmento yRtodo lo que sigue.Split<'plain'>→["plain"]
Cada tipo resuelto de arriba lo imprimió TypeScript 6.0.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.

