export interface DefaultTypeAndEventMap { [type: string]: any; } export interface AEventListener { (event: Event, key: Key): void; } export interface Interceptor { (type: string | number | symbol, next: () => void): void; } export default class AnyEvent { private __map; private __interceptor?; /** * 当前事件对象 */ event: unknown; /** * 注册拦截器 * @param interceptor 拦截器 */ beforeEach(interceptor: Interceptor): void; /** * 绑定事件 * @param typeOrTypes 事件名 * @param listener 回调函数 */ on(typeOrTypes: Key | Key[], listener: AEventListener): this; /** * 按照监听器注册的顺序,同步地调用每个注册到名为 eventName 的事件的监听器,并传入提供的参数。 * @param type 事件名 * @param payload 数据 * @param done 运行成功执行 */ emit(type: Key, payload?: TypeAndEventMap[Key], callback?: () => void): void; private __emit; /** * 解除绑定, * 如果不指定listener, * 那么解除所有eventName对应回调 * @param type 事件名 * @param listener 回调函数 */ off(type: Key, listener?: AEventListener): void; /** * 销毁实例 */ destroy(): void; }