typescript / intermediate
Snippet
Sichere Behandlung von Promise-Fehlern mit getupelten Async-Wrappern
Das Einbetten von Promises in einen Helper, der ein diskriminiertes Tupel ([error, null] oder [null, data]) zurückgibt, ermöglicht eine saubere Fehlerbehandlung im Go-Stil ohne verschachtelte Try-Catch-Blöcke.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
type AsyncResult<T, E = Error> = Promise<[E, null] | [null, T]>;async function safeResult<T, E = Error>(promise: Promise<T>): AsyncResult<T, E> {try {const data = await promise;return [null, data];} catch (error) {return [error as E, null];}}async function demo() {const task = Promise.reject(new Error('Network loss'));const [err, result] = await safeResult(task);if (err) {console.error('Caught safely:', err.message);return;}console.log('Success:', result);}
Erklärung
1
type AsyncResult<T, E = Error> = Promise<[E, null] | [null, T]>;
Definiert einen strikten generischen Union-Tupel-Typ, der entweder ein Fehler- oder ein Erfolgsergebnis darstellt.
2
return [error as E, null];
Fängt jede geworfene Ausnahme ab und gibt sie sauber als erstes Tupel-Element zurück.
3
const [err, result] = await safeResult(task);
Destrukturiert das Tupel sauber, um eine sofortige, typsichere bedingte Fehlerprüfung zu ermöglichen.