typescript / intermediate
Snippet
Discriminated Unions (Unterscheidbare Unions)
Discriminated Unions nutzen eine gemeinsame Literal-Eigenschaft (den Diskriminator), um TypeScript das sichere Eingrenzen von Union-Mitgliedern zu ermöglichen.
snippet.ts
1
2
3
4
5
6
7
8
9
interface Circle { kind: "circle"; radius: number; }interface Square { kind: "square"; side: number; }type Shape = Circle | Square;function getArea(s: Shape) {if (s.kind === "circle") return Math.PI * s.radius ** 2;return s.side ** 2;}
Erklärung
1
kind: "circle"
Ein Literal-Typ, der als eindeutige Kennung für das spezifische Interface dient.
2
type Shape = Circle | Square
Definiert einen Union-Typ, der entweder ein Circle oder ein Square sein kann.
3
if (s.kind === "circle")
TypeScript grenzt den Typ von 's' innerhalb dieses Blocks auf Circle ein.