im-ui-mobile
Version:
A Vue3.0 + Typescript instant messaging component library for Uniapp
88 lines (74 loc) • 2.2 kB
TypeScript
/**
* 事件总线类
*/
declare class EventBus {
private events: Map<string, Set<Function>>;
private globalListeners: Set<Function>;
constructor();
/**
* 监听特定事件
* @param eventName 事件名称
* @param callback 回调函数
*/
on<T = any>(eventName: string, callback: (data: T) => void): void;
/**
* 监听所有事件
* @param callback 全局回调函数
*/
onAll(callback: (eventName: string, data: any) => void): void;
/**
* 一次性监听特定事件
* @param eventName 事件名称
* @param callback 回调函数
*/
once<T = any>(eventName: string, callback: (data: T) => void): void;
/**
* 触发事件
* @param eventName 事件名称
* @param data 事件数据
*/
emit<T = any>(eventName: string, data?: T): void;
/**
* 移除事件监听器
* @param eventName 事件名称
* @param callback 要移除的回调函数(不传则移除所有监听器)
*/
off(eventName: string, callback?: Function): void;
/**
* 移除所有事件监听器
*/
offAll(): void;
/**
* 移除全局监听器
* @param callback 要移除的全局回调函数(不传则移除所有全局监听器)
*/
offAllListener(callback?: Function): void;
/**
* 获取事件监听器数量
* @param eventName 事件名称(不传则返回所有事件的总数)
* @returns 监听器数量
*/
getEventCount(eventName?: string): number;
/**
* 检查是否存在特定事件的监听器
* @param eventName 事件名称
* @returns 是否存在监听器
*/
hasEvent(eventName: string): boolean;
/**
* 获取所有已注册的事件名称
* @returns 事件名称数组
*/
getEventNames(): string[];
/**
* 清空所有事件(包括全局监听器)
*/
clear(): void;
/**
* 销毁事件总线实例
*/
destroy(): void;
}
declare const eventBus: EventBus;
export { eventBus, EventBus };
export default eventBus;