typescript / intermediate
Snippet
Vollständige Union-Behandlung mit Never-Typ-Zuweisung
Bei Discriminated Unions führt das Übergeben des default-Zweigs in eine never-erwartende Hilfsfunktion zu einem Kompilierfehler, sobald neue Union-Typen hinzugefügt aber nicht im Switch behandelt werden.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type UserRole = "admin" | "editor" | "viewer";function assertUnreachable(x: never): never {throw new Error(`Unexpected discriminant value: ${JSON.stringify(x)}`);}function getPermissions(role: UserRole): string[] {switch (role) {case "admin": return ["read", "write", "delete"];case "editor": return ["read", "write"];case "viewer": return ["read"];default: return assertUnreachable(role);}}
Erklärung
1
function assertUnreachable(x: never): never
Definiert eine Funktion für den unerreichbaren never-Typ, die einen Kompilierfehler erzwingt, wenn Fälle unberücksichtigt bleiben.
2
default: return assertUnreachable(role);
Stellt sicher, dass alle Varianten der Union abgedeckt wurden.