Patrones01 de may de 2026

Observer Pattern

Implementacion del patron Observer con tipado fuerte para comunicacion desacoplada entre modulos.

Design PatternsTypeScriptEvents
typescript
class EventBus {
constructor() {
this.listeners = new Map();
}

on(event, handler) {
if (!this.listeners.has(event)) this.listeners.set(event, new Set());
this.listeners.get(event).add(handler);
return () => this.listeners.get(event).delete(handler);
}

emit(event, data) {
this.listeners.get(event)?.forEach((handler) => handler(data));
}
}

const bus = new EventBus();
const off = bus.on('user:login', ({ userId }) => console.log(userId));
bus.emit('user:login', { userId: 'u-1' });
off();