typescript / intermediate
Snippet
Typsichere Funktionale Fehlerbehandlung mit Result-Containern
Anstatt sich auf das Werfen unbewältigter Ausnahmen zu verlassen, modellieren explizite Result-Typen Ergebnisse mithilfe eines Erfolgs-Flags. Dies zwingt Aufrufer dazu, den Ergebnisstatus zu prüfen, bevor sie auf den Erfolgs-Wert zugreifen oder die Fehlermeldung behandeln.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
type Ok<T> = { readonly success: true; readonly value: T };type Err<E> = { readonly success: false; readonly error: E };type Result<T, E> = Ok<T> | Err<E>;function ok<T>(value: T): Ok<T> {return { success: true, value };}function err<E>(error: E): Err<E> {return { success: false, error };}function parsePort(input: string): Result<number, string> {const parsed = Number(input);if (Number.isNaN(parsed) || parsed < 1 || parsed > 65535) {return err(`Invalid port number: '${input}'`);}return ok(parsed);}
Erklärung
1
type Result<T, E> = Ok<T> | Err<E>;
Definiert eine generische Union, die entweder eine erfolgreiche Ausgabe vom Typ T oder einen Fehler vom Typ E darstellt.
2
function parsePort(input: string): Result<number, string> {
Gibt eine Result-Instanz zurück, anstatt eine Laufzeit-Ausnahme auszulösen, wenn die Validierung fehlschlägt.
3
return ok(parsed);
Hüllt die gültige Ausgabe in einen Ok-Container mit success = true ein.