tsee
Version:
Typed EventEmitter implemented with typed args
25 lines (24 loc) • 1.83 kB
TypeScript
import { DefaultEventMap, IEventEmitter } from './index';
/** Implemented event emitter */
export declare class EventEmitter<EventMap extends DefaultEventMap = DefaultEventMap> implements IEventEmitter<EventMap> {
events: {
[eventName in keyof EventMap]?: Function[];
};
maxListeners: number;
emit: <EventKey extends keyof EventMap>(event: EventKey, ...args: Parameters<EventMap[EventKey]>) => boolean;
on: <EventKey extends keyof EventMap = string>(event: EventKey, listener: EventMap[EventKey]) => this;
once: <EventKey extends keyof EventMap = string>(event: EventKey, listener: EventMap[EventKey]) => this;
addListener: <EventKey extends keyof EventMap = string>(event: EventKey, listener: EventMap[EventKey]) => this;
removeListener: <EventKey extends keyof EventMap = string>(event: EventKey, listener: EventMap[EventKey]) => this;
hasListeners: <EventKey extends keyof EventMap = string>(event: EventKey) => boolean;
prependListener: <EventKey extends keyof EventMap = string>(event: EventKey, listener: EventMap[EventKey]) => this;
prependOnceListener: <EventKey extends keyof EventMap = string>(event: EventKey, listener: EventMap[EventKey]) => this;
off: <EventKey extends keyof EventMap = string>(event: EventKey, listener: EventMap[EventKey]) => this;
removeAllListeners: <EventKey extends keyof EventMap = string>(event?: EventKey) => this;
setMaxListeners: (n: number) => this;
getMaxListeners: () => number;
listeners: <EventKey extends keyof EventMap = string>(event: EventKey) => EventMap[EventKey][];
rawListeners: <EventKey extends keyof EventMap = string>(event: EventKey) => EventMap[EventKey][];
eventNames: () => (string | symbol)[];
listenerCount: <EventKey extends keyof EventMap = string>(type: EventKey) => number;
}