@pisell/pisellos
Version:
一个可扩展的前端模块化SDK框架,支持插件系统
64 lines (63 loc) • 1.78 kB
TypeScript
/**
* 发布订阅模块
* 用于组件/服务间的事件通信
*/
type EventCallback = (...args: any[]) => void;
interface EventSubscription {
unsubscribe: () => void;
}
declare class PubSub {
private events;
/**
* 订阅事件
* @param event 事件名称
* @param callback 回调函数
* @returns 订阅对象,可用于取消订阅
*/
subscribe(event: string, callback: EventCallback): EventSubscription;
/**
* 取消订阅事件
* @param event 事件名称
* @param callback 回调函数
* @returns 是否成功取消订阅
*/
unsubscribe(event: string, callback: EventCallback): boolean;
/**
* 发布事件
* @param event 事件名称
* @param args 事件参数
*/
publish(event: string, ...args: any[]): void;
/**
* 移除某个事件的所有订阅
* @param event 事件名称
* @returns 是否成功移除
*/
clearEvent(event: string): boolean;
/**
* 移除所有事件订阅
*/
clearAllEvents(): void;
/**
* 获取事件的订阅数量
* @param event 事件名称
* @returns 订阅数量
*/
getSubscriberCount(event: string): number;
/**
* 检查事件是否有订阅者
* @param event 事件名称
* @returns 是否有订阅者
*/
hasSubscribers(event: string): boolean;
/**
* 一次性订阅事件,事件触发后自动取消订阅
* @param event 事件名称
* @param callback 回调函数
* @returns 订阅对象,可用于取消订阅
*/
once(event: string, callback: EventCallback): EventSubscription;
}
declare const pubsub: PubSub;
export default pubsub;
export { PubSub, type EventCallback, type EventSubscription };