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
satisfiesexiste para evitar.keyof typeof routes→"home" | "about"
Cada tipo resuelto de arriba lo imprimió TypeScript 6.0.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.
asle dice al compilador que deje de discutir;satisfiesle 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.

