type BusClass={
emit :(name:string)=> void;
on :(name:string,callBack:Function)=> void;
off:(name:string)=>void
}
type paramsKey=string|number|symbol
type List={
// 动态嵌名,值接收多个
// key是动态的键名为paramsKey类型的子集,值为Array<Function>类型的数组
[key:paramsKey]:Array<Function>
}
class bus implements BusClass {
list:List
constructor(){
this.list={}
}
emit(name:string,...args:Array<any>){
let eventName:Array<Function>=this.list[name]
eventName.forEach(fn=>{
fn.apply(this,args)
})
}
on(name:string,callBack:Function){
let fn:Array<Function>=this.list[name]||[]
fn.push(callBack)
this.list[name]=fn
}
off(name:string){
if(this.list[name]){
delete this.list[name]
}
}
}
export default new bus()