typescript / intermediate
Snippet
Echte Laufzeitkapselung mit ECMAScript-Private-Fields
Das private-Schlüsselwort in TypeScript bietet nur eine Prüfung zur Kompilierzeit. Durch die Nutzung echter ECMAScript Private Fields mit dem #-Präfix wird die Kapselung direkt auf Laufzeitebene garantiert.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class BankAccount {#balance: number;public readonly accountId: string;constructor(accountId: string, initialDeposit: number) {this.accountId = accountId;this.#balance = initialDeposit;}public deposit(amount: number): void {if (amount <= 0) throw new Error("Deposit amount must be positive");this.#balance += amount;}public getBalance(): number {return this.#balance;}}
Erklärung
1
#balance: number;
Deklariert ein hartes privates Feld mit Raute-Präfix, das auch zur Laufzeit von außen unzugänglich ist.
2
this.#balance += amount;
Greift innerhalb der Methode sicher auf das private Feld zu und verändert es.