Type-safe Event Emitter
TypeScript 🔴 SeniorDefinition
Pattern d'event emitter ou les noms d'evenements et leurs payloads sont types statiquement. Garantit la correspondance emit/on a la compilation.
Analogie
Comme un standard telephonique type — chaque extension a un format de message predefini, pas de mauvaise connexion.
Exemple de code
type Events = { login: { userId: string }; logout: void };
class Emitter<T extends Record<string, any>> {
on<K extends keyof T>(event: K, fn: (data: T[K]) => void) {}
emit<K extends keyof T>(event: K, data: T[K]) {}
}
const bus = new Emitter<Events>();
Cas d'usage
Systemes event-driven (WebSocket, pub/sub, bus d'evenements) avec garantie de type sur les payloads.