/** * 基于 tsee 删减了不需要的功能 */ /// export type Listener = (...args: any[]) => Promise | void; export type DefaultEventMap = { [event in string | symbol]: Listener; }; export interface IEventEmitter { emit(event: EventKey, ...args: Parameters): boolean; on(event: EventKey, listener: EventMap[EventKey]): this; once(event: EventKey, listener: EventMap[EventKey]): this; addListener(event: EventKey, listener: EventMap[EventKey]): this; removeListener(event: EventKey, listener: EventMap[EventKey]): this; prependListener(event: EventKey, listener: EventMap[EventKey]): this; prependOnceListener(event: EventKey, listener: EventMap[EventKey]): this; off(event: EventKey, listener: EventMap[EventKey]): this; removeAllListeners(event?: EventKey): this; } /** cast type of any event emitter to typed event emitter */ export declare function asTypedEventEmitter(x: X): IEventEmitter; /** Implemented event emitter */ export declare class EventEmitter implements IEventEmitter { private debug; constructor(); events: { [eventName in keyof EventMap]?: Function[]; }; emit: (event: EventKey, ...args: Parameters) => boolean; on: (event: EventKey, listener: EventMap[EventKey]) => this; once: (event: EventKey, listener: EventMap[EventKey]) => this; addListener: (event: EventKey, listener: EventMap[EventKey]) => this; removeListener: (event: EventKey, listener: EventMap[EventKey]) => this; prependListener: (event: EventKey, listener: EventMap[EventKey]) => this; prependOnceListener: (event: EventKey, listener: EventMap[EventKey]) => this; off: (event: EventKey, listener: EventMap[EventKey]) => this; removeAllListeners: (event?: EventKey | undefined) => this; }