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

poze 3 months ago343 gadefr

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

Dyagnostik IA

Se IA ki fè l. Se pa yon repons — kominote a anba a konfime oswa korije l. Toujou verifye anvan ou fye l.

poze 3 months ago

1 Repons

8
✓
✓ Repons yo aksepte

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.

Konekte pou di lòt moun si li te mache.

answered 3 months ago

Sign in and verify your email to post an answer.