custom-app-event
Version:
基于typescript, 实现一个简单的event库,快速集成发布订阅模式
55 lines (54 loc) • 1.55 kB
TypeScript
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;
}