/** * 事件定义 * @interface IEventMap 事件定义 键是事件名称,值是事件处理函数 */ export interface IEventMap { [key: string]: (...args: any[]) => void } /** * 事件管理器接口定义 */ export interface IEventBuilder { /** * 添加事件监听 * @param eventName 事件名称 * @param handler 事件处理函数 * @param options 配置项 { immediate: 立即执行一次 immediateArgs: 立即执行的参数 once: 只监听一次 } * @returns void */ addEventListener( eventName: E, handler: F, options?: { immediate?: boolean immediateArgs?: Parameters once?: boolean }, ): void /** * 移除事件监听 * @param eventName 事件名称 * @param handler 事件处理函数 * @returns void */ removeEventListener(eventName: E, handler: F): void /** * 触发事件 * @param eventName 事件名称 * @param args 参数 * @returns void */ notifyEvent(eventName: E, ...args: Parameters): void }