TypeScript : à quoi sert l'opérateur `satisfies` ?
asked 3 months ago347 viewsfr
5
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> = ... ?
AI diagnosis
AI-generated. Not an answer — the community below confirms or corrects it. Always verify before relying on it.
asked 3 months ago
Stéphanie Louis 2.9k
1 Answer
8
✓✓ Accepted answer
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.
Sign in to tell others whether this worked.
answered 3 months ago
Samuel Joseph 2.7k
Sign in and verify your email to post an answer.