diff --git a/README.md b/README.md index 0fe8dc4..dff9914 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,7 @@ Register an event handler for the given type. ### off Remove an event handler for the given type. +If omit the `handler`, all event handlers of the given type are deleted. #### Parameters diff --git a/src/index.ts b/src/index.ts index 5365b6e..4648156 100644 --- a/src/index.ts +++ b/src/index.ts @@ -24,7 +24,7 @@ export interface Emitter> { on(type: Key, handler: Handler): void; on(type: '*', handler: WildcardHandler): void; - off(type: Key, handler: Handler): void; + off(type: Key, handler?: Handler): void; off(type: '*', handler: WildcardHandler): void; emit(type: Key, event: Events[Key]): void; @@ -67,14 +67,20 @@ export default function mitt>( /** * Remove an event handler for the given type. + * If `handler` is omitted, all handlers of the given type are removed. * @param {string|symbol} type Type of event to unregister `handler` from, or `'*'` - * @param {Function} handler Handler function to remove + * @param {Function} [handler] Handler function to remove * @memberOf mitt */ - off(type: Key, handler: GenericEventHandler) { + off(type: Key, handler?: GenericEventHandler) { const handlers: Array | undefined = all!.get(type); if (handlers) { - handlers.splice(handlers.indexOf(handler) >>> 0, 1); + if (handler) { + handlers.splice(handlers.indexOf(handler) >>> 0, 1); + } + else { + all.delete(type); + } } },