satisfies ou assertion as
Comprendre pourquoi satisfies est plus sûr qu’une conversion avec as.
satisfies ou assertion as est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage TypeScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours TypeScript Academy comprend 4 leçons au total.
Fonctionnement d’une assertion de type
L’assertion as indique au compilateur de vous faire confiance concernant un type. Elle ne vérifie pas que la valeur lui correspond réellement : elle remplace simplement le type inféré.
const value = { color: "red" } as { color: string; size: number };
// No error even though size is missing!
console.log(value.color);L’assertion de type contourne la sécurité
Comme as ignore la validation, elle peut dissimuler de véritables bogues. L’objet ci-dessus ne contient pas size, et pourtant TypeScript reste silencieux.
type Config = { color: string; size: number };
const broken = { color: "red" } as Config;
// broken.size is typed number but is actually undefined at runtime
console.log(broken.size); // undefinedsatisfies valide à la place
Remplacer as par satisfies transforme ce bogue silencieux en erreur de compilation explicite, car l’objet doit réellement correspondre au type.
type Config = { color: string; size: number };
// const c = { color: "red" } satisfies Config; // Error: size missing
const c = { color: "red", size: 10 } satisfies Config;
console.log(c.size);Une assertion peut imposer de mauvais types
Vous pouvez même affirmer des types totalement incompatibles au moyen d’une double assertion, ce qui est dangereux et devrait rester rare.
const n = "hello" as unknown as number;
// n is typed number but is actually a string
console.log(typeof n); // "string"satisfies ne ment jamais sur les valeurs
Contrairement à as, satisfies ne peut pas servir à revendiquer un type incompatible. Il confirme uniquement que la valeur correspond déjà au type.
// const x = "hello" satisfies number; // Error: string not assignable to number
const y = 42 satisfies number;
console.log(y);L’assertion perd la vérification des propriétés en trop
Avec as, les clés supplémentaires ou mal orthographiées passent inaperçues. satisfies continue de les signaler et détecte ainsi les fautes de frappe.
type Config = { mode: string };
const withAs = { mdoe: "dark" } as Config; // typo passes silently
// const withSat = { mdoe: "dark" } satisfies Config; // Error: mdoe
console.log(JSON.stringify(withAs));Quand une assertion de type est légitime
as a des usages valides, par exemple pour restreindre unknown après une vérification à l’exécution, ou pour travailler avec le DOM. Mais pour les objets de configuration, préférez satisfies.
const data: unknown = JSON.parse("{ }");
// After your own runtime validation, as can express the result.
const obj = data as Record<string, unknown>;
console.log(typeof obj);Privilégier satisfies pour config
Pour la configuration, les tables de routes et les palettes, satisfies fournit à la fois la validation et une inférence précise. as n’apporte ni validation ni garantie.
type Palette = Record<string, string>;
const safe = { primary: "blue", accent: "gold" } satisfies Palette;
console.log(safe.primary);<code>as const</code> est différent
Ne confondez pas as const avec une assertion de type. as const restreint les valeurs à leurs littéraux et rend les éléments accessibles en lecture seule ; cette construction est sûre et s’associe souvent à satisfies.
type Nums = readonly number[];
const xs = [1, 2, 3] as const satisfies Nums;
console.log(xs[0]);Résumé des risques
as : remplace l’avis du compilateur, n’effectue aucune vérification et peut dissimuler des bogues. satisfies : coopère avec le compilateur, effectue une vérification complète et préserve l’inférence. Choisissez satisfies par défaut.
type Config = { level: number };
// const risky = {} as Config; // compiles, level is undefined
const safe = { level: 1 } satisfies Config;
console.log(safe.level);Remplacer une assertion de type par satisfies
Une bonne habitude consiste, lorsque vous voyez as SomeObjectType sur un littéral que vous contrôlez, à essayer de le remplacer par satisfies et à corriger les erreurs qui apparaissent.
type Config = { url: string; retries: number };
// Before: const c = { url: "/api" } as Config;
const c = { url: "/api", retries: 3 } satisfies Config;
console.log(c.url, c.retries);Vérification rapide : satisfies contre l’assertion de type
Vérifiez votre compréhension de satisfies par rapport à une assertion de type.
Récapitulatif : satisfies contre l’assertion de type
Vous avez appris que as contourne les vérifications et peut dissimuler des bogues, tandis que satisfies valide la valeur et conserve une inférence précise. Préférez satisfies pour les objets de configuration que vous contrôlez.
type Config = { color: string; size: number };
const c = { color: "red", size: 10 } satisfies Config;
console.log(c.color, c.size);Apprends TypeScript avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 101
- Leçons
- 352
Questions Fréquemment Posées
La leçon « satisfies ou assertion as » est-elle gratuite ?
Oui — le texte complet de « satisfies ou assertion as » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours TypeScript Academy, passe à CoddyKit PRO. Le cours TypeScript Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « satisfies ou assertion as » ?
Comprendre pourquoi satisfies est plus sûr qu’une conversion avec as. Tu pratiques TypeScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer TypeScript Academy ?
Aucune expérience préalable n'est requise. TypeScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « satisfies ou assertion as » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon TypeScript Academy ?
Oui. Chaque leçon TypeScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Pourquoi satisfies existe
- satisfies ou annotation de type
- satisfies ou assertion as
- Modèles pratiques avec satisfies