TypeScript : à quoi sert l'opérateur `satisfies` ?

posée 3 months ago349 vuesfr

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> = ... ?

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.

posée 3 months ago

1 réponse

8
✓
✓ Réponse acceptée

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é.

answered 3 months ago

Sign in and verify your email to post an answer.