eventemitter0
Version:
event emitter for node and browser
33 lines (27 loc) • 1.14 kB
TypeScript
export namespace EventEmitter {
type EventName = string;
type EventContext = object;
type EventListener = (...args: any) => (Promise<any> | any);
interface EventListenerData {
name: EventName;
callback: EventListener
context?: EventContext
}
interface EventListeners {
[key: string]: EventListener | EventListenerData;
}
interface ConstructorOptions {
on?: EventListeners;
once?: EventListeners;
}
interface EventEmitterConstructor {
new(options?: ConstructorOptions): EventEmitter;
}
}
export default class EventEmitter {
constructor(options: EventEmitter.ConstructorOptions);
on(name: EventEmitter.EventName, listener: EventEmitter.EventListener, context?: EventEmitter.EventContext): this;
once(name: EventEmitter.EventName, listener: EventEmitter.EventListener, context?: EventEmitter.EventContext): this;
off(name?: EventEmitter.EventName | null, listener?: EventEmitter.EventListener | null, context?: EventEmitter.EventContext | null): this;
emit(name: EventEmitter.EventName, ...args: any[]): Promise<this>;
}