Distributive Conditional Types

TypeScript 🔴 Senior

Définition

Quand un type conditionnel agit sur un paramètre générique nu (T extends U), il se distribue sur chaque membre d'une union. Chaque membre est évalué indépendamment.

Analogie

Comme un tri postal — chaque lettre de la pile est examinées individuellement et envoyée dans la bonne boite.

Exemple de code

type NoNull<T> = T extends null | undefined ? never : T;
type R = NoNull<string | null | number>;
// string | number (null elimine)

Cas d'usage

Filtrer ou transformer chaque membre d'une union indépendamment (Exclude, Extract fonctionnent ainsi).

Anti-pattern

Ne pas comprendre la distribution et obtenir des résultats inattendus — utiliser [T] extends [U] pour la désactiver.

Termes liés

#advanced#type-system

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