type Forme =
{ type: "cercle"; rayon: number }
{ type: "rectangle"; largeur: number; hauteur: number };

function aire(forme: Forme): number {
switch (forme.type) {
case "cercle":
return Math.PI forme.rayon 2;

case "rectangle":
return forme.largeur forme.hauteur;

default: {
const exhaustif: never = forme;
return exhaustif;
}
}
}

Si une nouvelle variante est ajoutée sans être traitée :

type Forme =
{ type: "cercle"; rayon: number }
{ type: "rectangle"; largeur: number; hauteur: number }
{ type: "triangle"; base: number; hauteur: number };

TypeScript signale alors une erreur sur const exhaustif: never = forme, car la variante triangle n’est pas assignable à never.