typescript / expert
Snippet
Phantom-Typ-Zustandsautomaten für privilegierte Sicherheits-Workflows
Verwendet Phantom-Typ-Parameter und explizite 'this'-Parametertypisierung zur Erstellung von Zustandsautomaten auf Typenebene. Methoden wie 'execute' sind vor der erfolgreichen Verifizierung nicht aufrufbar.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
interface Unverified {}interface Verified {}class SecurityPipeline<State = Unverified> {private constructor(private readonly payload: string) {}static create(payload: string): SecurityPipeline<Unverified> {return new SecurityPipeline<Unverified>(payload);}verify(this: SecurityPipeline<Unverified>, secret: string): SecurityPipeline<Verified> {if (secret !== "SECRET_KEY") throw new Error("Invalid key");return new SecurityPipeline<Verified>(this.payload);}execute(this: SecurityPipeline<Verified>): string {return `Executing payload: ${this.payload}`;}}
Erklärung
1
class SecurityPipeline<State = Unverified>
Definiert generischen Phantom-Typ-Marker ohne Laufzeit-Overhead.
2
verify(this: SecurityPipeline<Unverified>, ...)
Beschränkt den Aufruf strikt auf Instanzen im Unverified-Zustand.
3
execute(this: SecurityPipeline<Verified>): string
Kompilierzeit-Schutz, der sicherstellt, dass die Ausführung nur bei verifizierten Pipelines möglich ist.