/** * */ export type EventEmitterListener

= (...callbackArgs: P) => void; /** * 事件监听器选项 */ export type EventEmitterOptions = { /** * 是否只监听一次 */ once?: boolean; }; /** * 事件监听器 */ export declare class EventEmitter> { private listeners; /** * 移除事件监听器 * @param eventName - 事件名称 * @param listener - 事件监听器 * @returns */ off: (eventName: E, listener: EventEmitterListener) => void; /** * 监听事件 * @param eventName - 事件名称 * @param listener - 事件监听器 * @param options - 事件监听器选项 * @returns */ on: (eventName: E, listener: EventEmitterListener, options?: EventEmitterOptions) => () => void; /** * 一次性监听事件 * @param eventName - 事件名称 * @param listener - 事件监听器 */ once: (eventName: E, listener: EventEmitterListener) => void; /** * 触发事件 * @param eventName - 事件名称 * @param args - 事件参数 */ emit: (eventName: E, ...args: T[E]) => void; /** * 获取事件名称对应的所有监听器 * @param eventName - 事件名称 * @returns - 返回事件名称对应的所有监听器 */ getListeners: (eventName: E) => EventEmitterListener[]; }