typescript / expert
Snippet
Explizite asynchrone Ressourcenverwaltung mit Symbol.asyncDispose
Dieses Experten-Snippet veranschaulicht die explizite Ressourcenverwaltung der Stufe 3 in TypeScript unter Verwendung von `Symbol.asyncDispose` und `await using`. Es garantiert das zuverlässige asynchrone Freigeben von Ressourcen beim Verlassen des Gültigkeitsbereichs ohne manuelle `try...finally`-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
class DatabaseConnection implements AsyncDisposable {private active = true;public async query(sql: string): Promise<unknown[]> {if (!this.active) throw new Error('Connection closed');return [{ id: 1, query: sql }];}async [Symbol.asyncDispose](): Promise<void> {if (this.active) {this.active = false;await new Promise((resolve) => setTimeout(resolve, 10));}}}async function executeTransaction(): Promise<void> {await using conn = new DatabaseConnection();await conn.query('SELECT * FROM users');}
Erklärung
1
class DatabaseConnection implements AsyncDisposable
Implementiert das globale Standard-Interface AsyncDisposable zur Konformität mit Ressourcen-Bereinigungen.
2
async [Symbol.asyncDispose](): Promise<void>
Definiert die asynchrone Aufräumlazenz, die beim Verlassen des Scopes automatisch ausgeführt wird.
3
await using conn = new DatabaseConnection();
Verwendet die Ressourcen-Deklarationssyntax, um die Lebensdauer-Bereinigung an den Block-Scope zu binden.