javascript / expert
Snippet
Das Registry-Pattern für entkoppelte Service-Injektion
Das Registry-Pattern entkoppelt den Verbrauch von Diensten von ihrer konkreten Implementierung. Dies ist besonders nützlich in komplexen Next.js-Anwendungen, in denen Dienste wie Auth oder Datenbank für Tests gemockt oder je nach Umgebung ausgetauscht werden müssen.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
type ServiceMap = Record<string, any>;class ServiceRegistry<T extends ServiceMap> {private instances = new Map<keyof T, T[keyof T]>();register<K extends keyof T>(key: K, instance: T[K]): void {this.instances.set(key, instance);}get<K extends keyof T>(key: K): T[K] {const instance = this.instances.get(key);if (!instance) throw new Error(`Service ${String(key)} not found`);return instance as T[K];}}const registry = new ServiceRegistry<{ auth: AuthService; db: Database }>();
nextjs
Erklärung
1
private instances = new Map<keyof T, T[keyof T]>();
Typsicherer Speicher für Service-Instanzen, indiziert durch ihre Schlüssel.
2
get<K extends keyof T>(key: K): T[K]
Ruft einen Dienst mit vollständiger Typ-Inferenz basierend auf dem angegebenen Schlüssel ab.
3
return instance as T[K];
Castet die abgerufene Instanz zurück in ihren spezifischen, in der ServiceMap definierten Typ.