Sofiane Boumedine Lexique Dev

Discriminated Union

TypeScript 🟡 Mid

Type : Concept

Definition

Une discriminated union est un type union ou chaque membre possede une propriete commune (le discriminant) avec une valeur literale unique. TypeScript utilise ce champ pour narrower le type automatiquement.

Analogie

Un colis avec une etiquette de couleur : rouge pour fragile, bleu pour alimentaire. L'etiquette te dit immediatement comment le traiter.

Exemple de code

type Shape =
  | { kind: class="str">'circle'; radius: number }
  | { kind: class="str">'rect'; width: number; height: number };
function area(s: Shape) {
  if (s.kind === class="str">'circle') return Math.PI * s.radius ** 2;
  return s.width * s.height; class="cmt">// rect narrowed
}

Cas d'usage

Modeliser des actions Redux, des reponses API ou des etats de machine a etats de maniere exhaustive.

coreinterview-questionpattern