ab-event-emitter
Version:
My implementation of event emitter
25 lines (24 loc) • 1.66 kB
TypeScript
declare type EventListener<EventConfig, Event extends keyof EventConfig> = (data: EventConfig[Event]) => void;
declare const EVENT_EXCLUDED = "ee-event-excluded";
declare const EVENT_INCLUDED = "ee-event-included";
declare type TDefaultEvent = typeof EVENT_EXCLUDED | typeof EVENT_INCLUDED;
declare type DefaultEvents<AdditionalEvents> = {
[defaultEvent in TDefaultEvent]: keyof AdditionalEvents | TDefaultEvent;
};
export declare type EventConfig<AdditionalEvents> = AdditionalEvents & DefaultEvents<AdditionalEvents>;
export declare class ABEventEmitter<AdditionalEvents extends Record<string, any> = Record<string, any>> {
static EventExcluded: typeof EVENT_EXCLUDED;
static EventIncluded: typeof EVENT_INCLUDED;
private listenersDict;
private listenedEvents;
constructor();
on<E extends keyof EventConfig<AdditionalEvents>>(event: E, listener: EventListener<EventConfig<AdditionalEvents>, E>): () => void;
off<E extends keyof EventConfig<AdditionalEvents>>(event: E, listener?: EventListener<EventConfig<AdditionalEvents>, E>): ABEventEmitter<EventConfig<AdditionalEvents>>;
emit<E extends keyof EventConfig<AdditionalEvents>>(event: E, data: EventConfig<AdditionalEvents>[E]): ABEventEmitter<EventConfig<AdditionalEvents>>;
offAll(): ABEventEmitter<EventConfig<AdditionalEvents>>;
private offEvent;
listenersNumber<E extends keyof EventConfig<AdditionalEvents>>(event: E): number;
getListenedEvents(): (keyof EventConfig<AdditionalEvents>)[];
getListeners<E extends keyof EventConfig<AdditionalEvents>>(event: E): EventListener<EventConfig<AdditionalEvents>, E>[];
}
export {};