diff --git a/index.d.ts b/index.d.ts index ce0bd56..efe6fa4 100644 --- a/index.d.ts +++ b/index.d.ts @@ -2,6 +2,10 @@ export type Arguments = [T] extends [(...args: infer U) => any] ? U : [T] extends [void] ? [] : [T] +type EventMap = { + [key: string]: (...args: any[]) => void +} + /** * Type-safe event emitter. * @@ -20,7 +24,7 @@ export type Arguments = [T] extends [(...args: infer U) => any] * * myEmitter.emit("error", "x") // <- Will catch this type error */ -interface TypedEventEmitter { +interface TypedEventEmitter { addListener (event: E, listener: Events[E]): this on (event: E, listener: Events[E]): this once (event: E, listener: Events[E]): this @@ -34,8 +38,8 @@ interface TypedEventEmitter { emit (event: E, ...args: Arguments): boolean // The sloppy `eventNames()` return type is to mitigate type incompatibilities - see #5 eventNames (): (keyof Events | string | symbol)[] - rawListeners (event: E): Function[] - listeners (event: E): Function[] + rawListeners (event: E): Events[E][] + listeners (event: E): Events[E][] listenerCount (event: E): number getMaxListeners (): number