Home > @wixc3/patterns > EventEmitter
Basic type safe event emitter
Signature:
export declare class EventEmitter<Events extends object, EventId extends keyof Events = keyof Events>
const ms = new EventEmitter<{ onChange: { id: 'onChange' }; onDelete: { id: 'onDelete' } }>();
ms.subscribe('onChange', (event) => {
event.id; // 'onChange'
});
ms.subscribe('onDelete', (event) => {
event.id; // 'onDelete'
});
ms.notify('onChange', { id: 'onChange' }); // event is type safe
ms.notify('onChange', { id: 'onDelete' }); // ERROR!!!
ms.notify('onSomethingElse', { id: 'onDelete' }); // ERROR!!!
Property | Modifiers | Type | Description |
---|---|---|---|
[clear](/core3-utils/patterns.eventemitter.clear.html) | () => void | Drop all subscriptions | |
[delete](/core3-utils/patterns.eventemitter.delete.html) | <Event extends EventId>(event: Event) => void | Drop all subscriptions of a signal | |
[emit](/core3-utils/patterns.eventemitter.emit.html) | <Event extends EventId>(event: Event, data: Events\[Event\]) => void | Notify all subscribers with arg data | |
[events](/core3-utils/patterns.eventemitter.events.html) | `protected` | Map<EventId, [Signal](/core3-utils/patterns.signal.html)<any>> | |
[hasSubscribers](/core3-utils/patterns.eventemitter.hassubscribers.html) | (event: EventId) => boolean | Check if an event has subscribers | |
[notify](/core3-utils/patterns.eventemitter.notify.html) | <Event extends EventId>(event: Event, data: Events\[Event\]) => void | Notify all subscribers with arg data | |
[off](/core3-utils/patterns.eventemitter.off.html) | <Event extends EventId>(event: Event, handler: (data: Events\[Event\]) => void) => void | Unsubscribe a handler from event | |
[on](/core3-utils/patterns.eventemitter.on.html) | <Event extends EventId>(event: Event, handler: (data: Events\[Event\]) => void) => () => void | Subscribe a handler for event | |
[once](/core3-utils/patterns.eventemitter.once.html) | <Event extends EventId>(event: Event, handler: (data: Events\[Event\]) => void) => () => void | Adds a handler that will be called at most once. | |
[subscribe](/core3-utils/patterns.eventemitter.subscribe.html) | <Event extends EventId>(event: Event, handler: (data: Events\[Event\]) => void) => () => void | Subscribe a handler for event | |
[unsubscribe](/core3-utils/patterns.eventemitter.unsubscribe.html) | <Event extends EventId>(event: Event, handler: (data: Events\[Event\]) => void) => void | Unsubscribe a handler from event |