eventBus.d.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. declare global {
  2. /**
  3. * 声明映射关系
  4. */
  5. interface EventMapper {
  6. }
  7. }
  8. /**
  9. * 事件名称
  10. */
  11. export type EventName = keyof EventMapper;
  12. /**
  13. * 事件参数
  14. */
  15. export type EventArgument<T extends EventName> = EventMapper[T];
  16. export declare class EventBus {
  17. private emitter;
  18. private bufferMap;
  19. private getBufferValue;
  20. private setBufferValue;
  21. /**
  22. * 监听事件
  23. */
  24. on<N extends EventName, A extends EventArgument<N>>(event: N, callback: (arg: A) => void): () => void;
  25. /**
  26. * 监听一次事件
  27. */
  28. once<N extends EventName, A extends EventArgument<N>>(event: N, callback: (arg: A) => void): () => void;
  29. /**
  30. * 触发事件
  31. * @param event
  32. * @param arg
  33. * @param replay - 是否重放该值
  34. */
  35. emit<N extends EventName, A extends EventArgument<N>>(event: N, arg: A, replay?: boolean): void;
  36. /**
  37. * 需要最新值的时候 可以调用此方法重置
  38. */
  39. resetReplayValue<N extends EventName>(event: N): void;
  40. /**
  41. * 监听新的订阅者
  42. */
  43. onSubscriber<N extends EventName, A extends EventArgument<N>>(event: N, callback: (listener: (arg: A) => void) => void): () => void;
  44. }
  45. //# sourceMappingURL=eventBus.d.ts.map