Conditional Types (infer)

TypeScript 🔴 Senior

Dé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

Imbriquer trop de conditional types — le code devient illisible et les erreurs cryptiques.
#advanced#interview#type-system

En entretien

  1. 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.

  2. Quel est le piège quand on imbrique trop de conditional types ?

    Le code devient illisible et les erreurs de compilation deviennent cryptiques.

  3. 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

← → au clavier pour passer d'une fiche à l'autre