Discriminated Union
TypeScript 🟡 MidType : 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">39;circle39;; radius: number }
| { kind: class="str">39;rect39;; width: number; height: number };
function area(s: Shape) {
if (s.kind === class="str">39;circle39;) 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.