@@ -21,15 +21,16 @@ export class DefaultEventEmitter implements IEventEmitter {
2121 throw new TypeError ( "Listener must be a function" ) ;
2222 }
2323
24- const listeners = this . events [ eventName ] ;
24+ // TODO: remove `as string` when updating to TypeScript 4.4 or newer (https://stackoverflow.com/a/64943542/8656352)
25+ const listeners = this . events [ eventName as string ] ;
2526 const listener : Listener = { fn, once } ;
2627
2728 if ( ! listeners ) {
28- this . events [ eventName ] = listener ;
29+ this . events [ eventName as string ] = listener ;
2930 this . eventCount ++ ;
3031 }
3132 else if ( isSingle ( listeners ) ) {
32- this . events [ eventName ] = [ listeners , listener ] ;
33+ this . events [ eventName as string ] = [ listeners , listener ] ;
3334 }
3435 else {
3536 listeners . push ( listener ) ;
@@ -39,7 +40,7 @@ export class DefaultEventEmitter implements IEventEmitter {
3940 }
4041
4142 private removeListenerCore < TState > ( eventName : string | symbol , state : TState , isMatch : ( listener : Listener , state : TState ) => boolean ) {
42- const listeners = this . events [ eventName ] ;
43+ const listeners = this . events [ eventName as string ] ;
4344
4445 if ( ! listeners ) {
4546 return this ;
@@ -53,7 +54,7 @@ export class DefaultEventEmitter implements IEventEmitter {
5354 this . removeEvent ( eventName ) ;
5455 }
5556 else if ( listeners . length === 1 ) {
56- this . events [ eventName ] = listeners [ 0 ] ;
57+ this . events [ eventName as string ] = listeners [ 0 ] ;
5758 }
5859 break ;
5960 }
@@ -71,7 +72,7 @@ export class DefaultEventEmitter implements IEventEmitter {
7172 this . events = { } ;
7273 }
7374 else {
74- delete this . events [ eventName ] ;
75+ delete this . events [ eventName as string ] ;
7576 }
7677 }
7778
@@ -100,15 +101,15 @@ export class DefaultEventEmitter implements IEventEmitter {
100101 this . events = { } ;
101102 this . eventCount = 0 ;
102103 }
103- else if ( this . events [ eventName ] ) {
104+ else if ( this . events [ eventName as string ] ) {
104105 this . removeEvent ( eventName ) ;
105106 }
106107
107108 return this ;
108109 }
109110
110111 listeners ( eventName : string | symbol ) : Function [ ] {
111- const listeners = this . events [ eventName ] ;
112+ const listeners = this . events [ eventName as string ] ;
112113
113114 if ( ! listeners ) {
114115 return [ ] ;
@@ -126,7 +127,7 @@ export class DefaultEventEmitter implements IEventEmitter {
126127 }
127128
128129 listenerCount ( eventName : string | symbol ) : number {
129- const listeners = this . events [ eventName ] ;
130+ const listeners = this . events [ eventName as string ] ;
130131
131132 if ( ! listeners ) {
132133 return 0 ;
@@ -161,7 +162,7 @@ export class DefaultEventEmitter implements IEventEmitter {
161162 }
162163
163164 emit ( eventName : string | symbol , arg0 ?: any , arg1 ?: any , arg2 ?: any , arg3 ?: any , ...moreArgs : any [ ] ) : boolean {
164- let listeners = this . events [ eventName ] ;
165+ let listeners = this . events [ eventName as string ] ;
165166
166167 if ( ! listeners ) {
167168 return false ;
0 commit comments