@@ -44,17 +44,18 @@ namespace EventEmitter {
4444 [ E in string | symbol ] : EventEmitter . DefaultListener
4545 } ;
4646
47- export type Event < Events extends { } > = Extract <
48- keyof Events ,
49- string | symbol
50- > ;
47+ export type Event < Events extends { } > = Extract < keyof Events , string | symbol > ;
5148
5249 export type EmitArgs < T > = [ T ] extends [ ( ...args : infer U ) => any ]
5350 ? U
5451 : [ T ] extends [ void ]
5552 ? [ ]
5653 : [ T ] ;
5754
55+ export type Listener < E extends { } , K extends keyof E > = (
56+ ...args : EmitArgs < E [ K ] >
57+ ) => void ;
58+
5859 export interface Listeners {
5960 [ event : string ] : Item [ ] | undefined ;
6061 }
@@ -64,14 +65,14 @@ interface EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
6465 on ( event : "error" , listener : ( error : Error ) => void , context ?: any ) : this;
6566 on < K extends EventEmitter . Event < Events > > (
6667 event : K ,
67- listener : Events [ K ] ,
68+ listener : EventEmitter . Listener < Events , K > ,
6869 context ?: any ,
6970 ) : this;
7071
7172 off ( event : "error" , listener : ( error : Error ) => void ) : this;
7273 off < K extends EventEmitter . Event < Events > > (
7374 event : K ,
74- listener : Events [ K ] ,
75+ listener : EventEmitter . Listener < Events , K > ,
7576 ) : this;
7677}
7778
@@ -97,7 +98,7 @@ class EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
9798 public listeners ( event : "error" ) : EventEmitter . DefaultListener [ ] ;
9899 public listeners < K extends EventEmitter . Event < Events > > (
99100 event : K ,
100- ) : Array < Events [ K ] > ;
101+ ) : Array < EventEmitter . Listener < Events , K > > ;
101102 public listeners ( event : string | symbol ) {
102103 const listeners = this . rawListeners ( event as any ) ;
103104 const length = listeners . length ;
@@ -152,7 +153,7 @@ class EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
152153 ) : this;
153154 public addListener < K extends EventEmitter . Event < Events > > (
154155 event : K ,
155- listener : Events [ K ] ,
156+ listener : EventEmitter . Listener < Events , K > ,
156157 context ?: any ,
157158 ) : this;
158159 public addListener (
@@ -170,7 +171,7 @@ class EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
170171 ) : this;
171172 public once < K extends EventEmitter . Event < Events > > (
172173 event : K ,
173- listener : Events [ K ] ,
174+ listener : EventEmitter . Listener < Events , K > ,
174175 context ?: any ,
175176 ) : this;
176177 public once (
@@ -188,7 +189,7 @@ class EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
188189 ) : this;
189190 public prependListener < K extends EventEmitter . Event < Events > > (
190191 event : K ,
191- listener : Events [ K ] ,
192+ listener : EventEmitter . Listener < Events , K > ,
192193 context ?: any ,
193194 ) : this;
194195 public prependListener (
@@ -206,7 +207,7 @@ class EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
206207 ) : this;
207208 public prependOnceListener < K extends EventEmitter . Event < Events > > (
208209 event : K ,
209- listener : Events [ K ] ,
210+ listener : EventEmitter . Listener < Events , K > ,
210211 context ?: any ,
211212 ) : this;
212213 public prependOnceListener (
@@ -245,7 +246,7 @@ class EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
245246 public removeListener ( event : "error" , listener : ( error : Error ) => void ) : this;
246247 public removeListener < K extends EventEmitter . Event < Events > > (
247248 event : K ,
248- listener : Events [ K ] ,
249+ listener : EventEmitter . Listener < Events , K > ,
249250 ) : this;
250251 public removeListener (
251252 event : string | symbol ,
0 commit comments