TypeScript Template Literal Types: cómo crear APIs expresivas y type-safe

Los template literal types llegaron en TypeScript 4.1, y la mayoría de los equipos los usa para uno o dos trucos antes de seguir adelante. Eso deja la mayor parte de su potencial sin aprovechar. Usados de forma sistemática, permiten codificar contratos a nivel de protocolo — buses de eventos, registros de rutas, sistemas de permisos, convenciones de nomenclatura de tokens CSS — directamente en el sistema de tipos. Cero sobrecarga en tiempo de ejecución, autocompletado completo en el IDE y errores detectados en tiempo de compilación.

Las APIs que dependen mucho de cadenas de texto son las más difíciles de mantener type-safe. Los emisores de eventos, los manejadores de rutas, los helpers de CSS-in-JS: todos aceptan cadenas, y sin template literal types, esas cadenas son string (inútil) o una unión escrita a mano (frágil y verbosa). La unión escrita a mano es el verdadero problema: se desincroniza en cuanto se renombra un concepto del dominio.