0 Tage Serie
javascript / intermediate
Snippet

Datenkapselung mittels privater Felder und Zugriffsmethoden in Services

Private Klassenfelder (#) erzwingen in JavaScript eine strikte Kapselung zur Laufzeit. In Kombination mit Gettern und Settern können Services sensible Zustände sicher kapseln und Zustandsänderungen mit Validierungsregeln absichern.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import { Injectable } from '@angular/core';
@Injectable({ providedIn: 'root' })
export class SessionManager {
#authToken: string | null = null;
get isAuthenticated(): boolean {
return this.#authToken !== null;
}
set authToken(token: string) {
if (!token.trim()) {
throw new Error('Token cannot be empty');
}
this.#authToken = token;
}
clearSession(): void {
this.#authToken = null;
}
}
angular
Erklärung
1
#authToken: string | null = null;
Deklariert ein echtes privates JavaScript-Feld, auf das von außerhalb der Klasseninstanz nicht zugegriffen werden kann.
2
get isAuthenticated(): boolean {
Bietet schreibgeschützten Zugriff auf abgeleiteten Zustand, ohne das interne Token direkt preiszugeben.
3
set authToken(token: string) {
Fängt Schreiboperationen auf der Eigenschaft ab, um Eingaben zu validieren, bevor der private Zustand aktualisiert wird.