TypeScript : à quoi sert l'opérateur `satisfies` ?
posée 3 months ago349 vuesfr
Je vois de plus en plus satisfies dans du code TS :
const routes = { home: '/', about: '/about' } satisfies Record<string, string>;
Quelle est la différence avec une annotation const routes: Record<string, string> = ... ?
Diagnostic IA
Généré par IA. Ce n'est pas une réponse — la communauté ci-dessous le confirme ou le corrige. Vérifiez toujours avant de vous y fier.
1 réponse
Une annotation *élargit* le type de la variable vers le type annoncé. Tu perds l'information précise :
const a: Record<string, string> = { home: '/', about: '/about' };
a.contact; // pas d'erreur : n'importe quelle clé est acceptée
satisfies vérifie que la valeur est compatible, mais conserve le type inféré :
const b = { home: '/', about: '/about' } satisfies Record<string, string>;
b.contact; // ❌ erreur : la propriété n'existe pas
b.home; // ✅ ok : la clé est connue
En résumé : satisfies = « valide contre ce type, sans me le coller dessus ». Très utile pour les objets de configuration, les maps de routes et les tables de traduction.
Connectez-vous pour dire si ça a marché.
Sign in and verify your email to post an answer.