UNPKG

custom-app-event

Version:

基于typescript, 实现一个简单的event库,快速集成发布订阅模式

55 lines (54 loc) 1.55 kB
import { EventType } from './types'; /** * 定义事件类 */ export declare class AppEvent<T extends Record<string, any>> { /** * 开启则打印log */ private debug; /** * 生成随机tag的位数 */ private tagLen; constructor(init?: Partial<{ debug: boolean; tagLen: number; }>); /** * 使用Map()结构,保存订阅者的信息 */ private eventObj; /** * 暴露获取所有的event事件, 数据结构: Map() */ get events(): EventType.EventObj<T>; /** * 添加事件 * @param eventName 事件名称 * @param event 事件 * @param tag [可选]自定义TagName */ addListen<EVENT extends keyof T>(eventName: EVENT, event: EventType.EventFun<T[EVENT]>, tag?: string): string; /** * 通知事件,如果不指定tag,则通知所有对应事件的订阅,如果指定tag,则只通知对应tag的订阅者 * @param eventName 事件名称 * @param options {value: 参数, tag: 每一个订阅者唯一tag} */ notification<EVENT extends keyof T>(eventName: EVENT, options?: Partial<{ value: T[EVENT]; tag: string; }>): void; /** * 移除事件, 指定tag则移除对应的tag,如果不指定则移除全部 * @param eventName 事件名称 * @param tag 唯一事件标签 */ removeListen(eventName: keyof T, tag?: string): void; /** * 打印日志 * @param type * @param eventName */ private printLog; }