ts自动换行复制type Rets = any[] type CallBack = (...ret: Rets) => void class EventBus { events: Record<string, Set<CallBack>> = {} on(eventName: string, cb: CallBack) { if (!events[eventName]) { this.events[eventName] = new Set() } this.events[eventName].add(cb) } emit(eventName: string, ...ret: Rets) { this.events[eventName].forEach(cb => cb(...ret)) } off(eventName: string, cb: CallBack) { this.events[eventName].delete(cb) } once(eventName: string, cb: CallBack) { const handler = (...ret: Rets) => { cb(...ret) this.off(eventName, handler) } this.on(eventName, cb) } } const bus = new EventBus() bus.emit("change", "hello world") 32 行
评论区
评论加载中...