Conditional Types (infer)
TypeScript 🔴 SeniorDéfinition
Types qui sélectionnent un type selon une condition (T extends U ? X : Y). Le mot-clé infer permet d'extraire des sous-types dans la branche true.
Analogie
Comme un aiguillage ferroviaire — selon le type de train, il est dirige sur une voie ou une autre.
Exemple de code
type Unwrap<T> = T extends Promise<infer U> ? U : T;
type A = Unwrap<Promise<string>>; // string
type B = Unwrap<number>; // number
Cas d'usage
Extraire des types imbriques (retour de Promise, éléments de tableau, props de composants React).
Anti-pattern
Termes liés
En entretien
Explique-moi ce que fait un conditional type avec infer.
C'est un type qui sélectionne un résultat selon une condition `T extends U ? X : Y`, et infer permet d'extraire un sous-type dans la branche vraie, comme le type contenu dans une Promise.
Quel est le piège quand on imbrique trop de conditional types ?
Le code devient illisible et les erreurs de compilation deviennent cryptiques.
Dans quel cas utiliser ce pattern en senior ?
Pour extraire des types imbriqués comme le retour d'une Promise, les éléments d'un tableau ou les props d'un composant React.
Fiche mise à jour le 2026-09-27