Comprendre infer dans les types conditionnels
Extrayez les types internes avec infer dans les clauses extends
Comprendre infer dans les types conditionnels est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 1 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.
Qu’est-ce que l’inférence ?
Le mot-clé infer apparaît dans les types conditionnels et permet à TypeScript de capturer une variable de type à partir de la position correspondante, afin que vous puissiez l’utiliser dans la branche vraie.
type GetReturn<T> = T extends (...args: any[]) => infer R ? R : never;Exemple d’inférence de base
Nous extrayons ici le type de retour de n’importe quelle fonction à l’aide de infer R.
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
type A = ReturnType<() => string>; // string
type B = ReturnType<() => number[]>; // number[]Fonctionnement de l’inférence
TypeScript compare la structure de T au modèle. En cas de correspondance, la variable inférée contient la partie correspondante. Sinon, la branche fausse est utilisée.
type First<T> = T extends [infer F, ...any[]] ? F : never;
type X = First<[string, number, boolean]>; // stringInférence à partir de paramètres génériques
Vous pouvez inférer l’argument de type d’un type générique, par exemple en extrayant T de Promise.
type Unwrap<T> = T extends Promise<infer U> ? U : T;
type A = Unwrap<Promise<string>>; // string
type B = Unwrap<number>; // numberPlusieurs variables d’inférence
Vous pouvez utiliser plusieurs clauses infer dans un même type conditionnel pour capturer plusieurs positions simultanément.
type Head<T> = T extends [infer H, ...infer Tail] ? H : never;
type Tail<T> = T extends [infer H, ...infer Tail] ? Tail : never;Inférence dans les paramètres de fonction
L’inférence peut également capturer les types des paramètres d’une fonction, et pas seulement ses types de retour.
type FirstParam<T> = T extends (first: infer P, ...rest: any[]) => any ? P : never;
type A = FirstParam<(x: string, y: number) => void>; // stringComportement distributif avec l’inférence
Lorsque T est une union, les types conditionnels, y compris ceux qui utilisent infer, sont distribués sur chaque membre de l’union.
type UnwrapAll<T> = T extends Promise<infer U> ? U : T;
type X = UnwrapAll<Promise<string> | Promise<number>>;
// string | numberInférence imbriquée
Vous pouvez imbriquer l’inférence pour atteindre une structure de type plus profonde, par exemple pour extraire le type de valeur d’un tableau situé dans une promesse.
type UnwrapPromiseArray<T> =
T extends Promise<infer U>
? U extends (infer V)[]
? V
: U
: T;Inférence avec des modèles de chaînes
Les types littéraux de modèle combinés à l’inférence vous permettent d’extraire des sous-chaînes de types littéraux de chaînes.
type GetDomain<T extends string> =
T extends `https://${infer Domain}` ? Domain : never;
type D = GetDomain<"https://example.com">; // "example.com"Pièges courants
L’inférence ne fonctionne que dans la clause extends d’un type conditionnel. L’utiliser ailleurs provoque une erreur de compilation. De plus, l’inférence de la branche fausse n’est pas disponible.
// Error: infer can only appear in extends clauses
type Bad<T> = infer R; // SyntaxErrorRécapitulatif : inférence
Le mot-clé infer permet à TypeScript de capturer un fragment de type à partir d’une correspondance structurelle dans un type conditionnel. Il est à la base de types utilitaires tels que ReturnType, Parameters et Awaited.
Vérification rapide
Où le mot-clé infer peut-il être utilisé ?
Ce que vous avez appris
Le mot-clé infer permet la correspondance de modèles au niveau des types en extrayant des fragments de type à partir de modèles structurels. Il constitue le fondement de puissants types utilitaires et de la métaprogrammation sûre du point de vue des types dans TypeScript.
Questions Fréquemment Posées
La leçon « Comprendre infer dans les types conditionnels » est-elle gratuite ?
Oui — le texte complet de « Comprendre infer dans les types conditionnels » 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 « Comprendre infer dans les types conditionnels » ?
Extrayez les types internes avec infer dans les clauses extends 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 1 sur 4.
Combien de temps prend la leçon « Comprendre infer dans les types conditionnels » ?
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
- Comprendre infer dans les types conditionnels
- Créer ReturnType et Parameters à partir de zéro
- Motifs de déduction profondément imbriqués
- Cas pratiques d’utilisation de infer : déballer les promesses