typescript / expert
Snippet
Opaqu brandierte Authentifizierungs-Token mit typbasiertem Privilegien-Schutz
Nominales Branding heftet unsichtbare Typ-Tags über ein nicht-existentes Unique Symbol an primitive Typen wie `string`. Dies verhindert, dass strukturelle Gleichheit ungeprüfte Strings in privilegierte Funktionen lässt, wodurch Autorisierungsabläufe direkt im Type-Checker erzwungen werden.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
declare const BrandSymbol: unique symbol;type Brand<T, B extends string> = T & { readonly [BrandSymbol]: B };type UnauthenticatedToken = Brand<string, "UNAUTH">;type AdminToken = Brand<string, "ADMIN">;function elevateToken(token: UnauthenticatedToken, secret: string): AdminToken {if (secret !== "SUPER_SECRET") throw new Error("Unauthorized");return token as unknown as AdminToken;}function executeAdminAction(token: AdminToken, command: string): void {console.log(`Executing ${command} with token ${token}`);}
Erklärung
1
type Brand<T, B extends string> = T & { readonly [BrandSymbol]: B };
Erzeugt einen opaken nominalen Typ durch Verknüpfung des Basistyps T mit einem Unique-Symbol-Markierungsobjekt.
2
function elevateToken(token: UnauthenticatedToken, secret: string): AdminToken
Definiert eine explizite Prüfungsgrenze, die ein unprivilegiertes Token in ein brandiertes AdminToken umwandelt.
3
function executeAdminAction(token: AdminToken, command: string): void
Weist einfache Strings zur Kompilierzeit ab und akzeptiert ausschließlich verifizierte AdminToken-Instanzen.