Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. class SomeClass{
  2. private events: Map<string, Set<any>> = new Map()
  3.  
  4. on(event: string, callback: (p?: any) => any) {
  5. if (typeof event !== 'string' || typeof callback !== 'function') {
  6. return
  7. }
  8. if (!this.events.has(event)) {
  9. this.events.set(event, new Set())
  10. }
  11. const e = this.events.get(event)
  12. !!e && e.add(callback)
  13. }
  14.  
  15. off(event: string, callback?: (p?: any) => any) {
  16. if (!this.events.has(event) || !this.events.get(event)) {
  17. return
  18. }
  19.  
  20. if (typeof callback === 'function') {
  21. const e = this.events.get(event)
  22. !!e && e.delete(callback)
  23. } else {
  24. this.events.delete(event)
  25. }
  26. }
  27.  
  28. emit(event: string, ...args: any) {
  29. if (!this.events.has(event)) {
  30. return
  31. }
  32. const e = this.events.get(event)
  33. !!e &&
  34. e.forEach((e: (...p: any) => void) => {
  35. e.apply(null, args)
  36. })
  37. }
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement