Discriminated Union
TypeScript 🟡 MidDefinition
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.