typescript / intermediate
Snippet
Sicherstellen vollständiger Switch-Zweige durch Never-Vollständigkeitsprüfungen
Die Übergabe einer Fallback-Variable an eine Funktion, die nur 'never' akzeptiert, erzwingt einen Fehler zur Kompilierzeit, wenn Union-Elemente unberücksichtigt bleiben.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
type UserRole = 'admin' | 'editor' | 'viewer';function assertUnreachable(x: never): never {throw new Error(`Unhandled case: ${JSON.stringify(x)}`);}function getPermissions(role: UserRole): string[] {switch (role) {case 'admin':return ['create', 'read', 'update', 'delete'];case 'editor':return ['create', 'read', 'update'];case 'viewer':return ['read'];default:return assertUnreachable(role);}}
Erklärung
1
function assertUnreachable(x: never): never {
Akzeptiert nur den Bottom-Typ 'never', der nur zuweisbar ist, wenn alle Möglichkeiten eingegrenzt wurden.
2
return assertUnreachable(role);
Löst einen Kompilierfehler aus, wenn ein neues UserRole-Mitglied ohne passenden Switch-Case hinzugefügt wird.