gaoluyang
3 天以前 92230c9a97dc9ce9df3313d11d26999c04bb6b26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const event: { [key: string]: Function } = {}
/** 事件句柄 */
export default {
  /** 绑定一个事件 */
  $on(eventName: string, eventFun: Function) {
    if (event.hasOwnProperty(eventName)) {
      throw new Error(`存在事件 => ${eventName}`)
    } else {
      event[eventName] = eventFun
    }
  },
  /** 解绑一个事件 */
  $off(eventName: keyof typeof event) {
    if (event.hasOwnProperty(eventName)) {
      delete event[eventName]
    } else {
      throw new Error(`不存在事件 => ${eventName}`)
    }
  },
  /** 触发一个事件 */
  $emit<T>(eventName: keyof typeof event, ...args: any):T {
    if (event.hasOwnProperty(eventName)) {
      return event[eventName](...args)
    } else {
      throw new Error(`不存在事件 => ${eventName}`)
    }
  }
}