Discriminated Union

TypeScript 🟡 Mid

Definition

Union de types partageant une propriete commune (discriminant) qui permet a TS de distinguer chaque variante. Pattern fondamental pour modeliser des etats.

Analogie

Comme des colis avec une etiquette de couleur — la couleur suffit pour savoir quel traitement appliquer.

Exemple de code

type Result =
  | { status: "ok"; data: string }
  | { status: "error"; message: string };
function handle(r: Result) {
  if (r.status === "ok") r.data; // string
  else r.message; // string
}

Cas d'usage

Modeliser des etats applicatifs (loading/success/error) avec exhaustivite garantie par le compilateur.

Anti-pattern

Utiliser des booleens multiples (isLoading, hasError) au lieu d'une union discriminee — etats impossibles deviennent possibles.

Termes lies

#core#interview#pattern