type MyEvents = 'login' | 'logout' | 'error';
interface MyEventPayloads extends EventPayloadMap<MyEvents> {
login: { userId: string; timestamp: Date };
logout: { reason: string };
error: { code: number; message: string };
}
const bus = EventBus.create<MyEvents, MyEventPayloads>();
bus.subscribe('login', (payload) => {
// payload é tipado como { userId: string; timestamp: Date }
console.log(payload.userId);
});
Mapa de payloads para eventos.
Clientes podem estender esta interface para definir tipos específicos de payload para cada evento.