bus.ts 787 B

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