in, instanceof et unions discriminées
Utilisez les vérifications in/propriété, instanceof pour les classes et les unions discriminées afin de créer des embranchements sûrs.
in, instanceof et unions discriminées est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 3. 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 3 leçons au total.
Introduction
Objectif : mettre en pratique trois gardes puissantes : in pour vérifier les propriétés, instanceof pour les classes et les unions discriminées pour effectuer des branchements clairs.
Opérateur in
in affine un type en vérifiant le nom d'une propriété à l'exécution. Il est particulièrement utile pour les unions de littéraux d'objet.
type HasLength = { length: number };
function print(v: string | HasLength) {
if ("length" in v) {
// v is HasLength
console.log("len:", v.length);
} else {
// v is string
console.log(v.toUpperCase());
}
}
print({ length: 3 });
print("ts");instanceof
instanceof vérifie les prototypes des valeurs fondées sur des classes. Il fonctionne lorsque le constructeur est disponible à l'exécution.
class Person {
constructor(public name: string) {}
}
function hello(x: Person | Date) {
if (x instanceof Person) {
console.log("Hi", x.name);
} else {
console.log("Year", x.getFullYear());
}
}
hello(new Person("Ada"));
hello(new Date(2024, 0, 1));Union discriminée
Les unions discriminées utilisent une étiquette littérale (comme kind) pour effectuer un branchement propre, avec un affinement complet pour chaque cas.
type Circle = { kind: "circle"; radius: number };
type Square = { kind: "square"; size: number };
type Shape = Circle | Square;
function area(s: Shape): number {
switch (s.kind) {
case "circle":
return Math.PI * s.radius ** 2;
case "square":
return s.size * s.size;
}
}
console.log(area({ kind: "circle", radius: 2 }));
console.log(area({ kind: "square", size: 3 }));Combinaison des gardes
Combinez les vérifications d'étiquette avec in pour affiner les structures imbriquées et n'accéder qu'aux membres sûrs.
type FetchOk = { status: "ok"; data: { length: number } };
type FetchErr = { status: "error"; message: string };
type Result = FetchOk | FetchErr;
function handle(r: Result) {
if (r.status === "ok" && "length" in r.data) {
console.log("items:", r.data.length);
} else {
console.log("error:", r.message);
}
}
handle({ status: "ok", data: { length: 5 } });
handle({ status: "error", message: "oops" });Recommandations
Recommandations :
- Utilisez in pour les unions fondées sur les propriétés.
- Utilisez instanceof avec les classes.
- Utilisez les unions discriminées pour un flux de contrôle clair.
Vérification de l'opérateur in
Vérification rapide : quel opérateur vérifie une propriété à l'exécution et affine les types ?
Récapitulatif
Récapitulatif : in vérifie les propriétés, instanceof vérifie les classes et les unions discriminées permettent des branchements propres et sûrs du point de vue des types.
Questions Fréquemment Posées
La leçon « in, instanceof et unions discriminées » est-elle gratuite ?
Oui — le texte complet de « in, instanceof et unions discriminées » 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 3 leçons au total.
Qu'est-ce que j'apprendrai dans « in, instanceof et unions discriminées » ?
Utilisez les vérifications in/propriété, instanceof pour les classes et les unions discriminées afin de créer des embranchements sûrs. 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 2 sur 3.
Combien de temps prend la leçon « in, instanceof et unions discriminées » ?
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
- typeof, égalité et réduction par vérité
- in, instanceof et unions discriminées
- Exhaustivité avec never (introduction)