diff --git a/lib/typed-events.ts b/lib/typed-events.ts index b672d456..3e036cfa 100644 --- a/lib/typed-events.ts +++ b/lib/typed-events.ts @@ -107,6 +107,20 @@ export abstract class StrictEventEmitter< return this; } + /** + * Removes the `listener` function as an event listener for `ev`. + * + * @param ev Name of the event + * @param listener Callback function + */ + off>( + ev?: Ev, + listener?: ReservedOrUserListener + ): this { + super.off(ev as string, listener); + return this; + } + /** * Emits an event. * @@ -153,4 +167,44 @@ export abstract class StrictEventEmitter< Ev >[]; } + + /** + * Returns true if there is a listener for this event. + * + * @param event Event name + * @returns boolean + */ + hasListeners< + Ev extends ReservedOrUserEventNames + >(event: Ev): boolean { + return super.hasListeners(event as string); + } + + /** + * Removes the `listener` function as an event listener for `ev`. + * + * @param ev Name of the event + * @param listener Callback function + */ + removeListener< + Ev extends ReservedOrUserEventNames + >( + ev?: Ev, + listener?: ReservedOrUserListener + ): this { + super.removeListener(ev as string, listener); + return this; + } + + /** + * Removes all `listener` function as an event listener for `ev`. + * + * @param ev Name of the event + */ + removeAllListeners< + Ev extends ReservedOrUserEventNames + >(ev?: Ev): this { + super.removeAllListeners(ev as string); + return this; + } }