Distributive Conditional Types

TypeScript 🔴 Senior

Definition

Quand un type conditionnel agit sur un parametre generique nu (T extends U), il se distribue sur chaque membre d'une union. Chaque membre est evalue independamment.

Analogie

Comme un tri postal — chaque lettre de la pile est examinees individuellement et envoyee 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 independamment (Exclude, Extract fonctionnent ainsi).

Anti-pattern

Ne pas comprendre la distribution et obtenir des resultats inattendus — utiliser [T] extends [U] pour la desactiver.

Termes lies

#advanced#type-system