Operadores
satisfies
Comprueba un valor contra un tipo sin ensancharlo a ese tipo.
Qué es
Añadido en la 4.9 para resolver un dilema real: anotar una constante hace que se compruebe pero descarta todo lo específico de ella, mientras que dejarla sin anotar conserva el detalle y no comprueba nada. `satisfies` hace ambas cosas — la restricción se aplica y el tipo inferido es el estrecho que de verdad escribiste.
Ejemplos
typeof routes→{ readonly home: "/"; readonly about: "/about"; }typeof widened→{ [x: string]: string; }La anotación colapsa a una firma de índice a secas — la restricción se comprobó y cada literal se tiró por el camino. Esa pérdida es lo que `satisfies` existe para evitar.
keyof typeof routes
→"home" | "about"
Cada tipo resuelto de arriba lo imprimió TypeScript 5.9.3, no se escribió a mano.
Lo que no hace
- No cambia el valor ni el JavaScript emitido. Como toda construcción a nivel de tipos, se borra y nunca se ejecuta.
- No es un cast. `as` le dice al compilador que deje de discutir; `satisfies` le pide que compruebe y luego calla sobre el resultado.
Conclusión
Usa `as const satisfies X` en objetos de configuración. Obtienes la restricción aplicada y los tipos literales conservados, lo que antes era una elección.