Une union discriminée est une union d'objets qui partagent une propriété littérale commune, le discriminant (souvent type ou kind). Tester cette propriété rétrécit l'union au bon variant. Avec un switch exhaustif, le compilateur signale tout cas oublié.
Exemple
type Forme =
| { type: 'cercle'; rayon: number }
| { type: 'carre'; cote: number };