diff --git a/src/index.ts b/src/index.ts index ae85607..773b034 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,7 +18,7 @@ export interface Emitter { on(type: EventType, handler: Handler): void; on(type: '*', handler: WildcardHandler): void; - off(type: EventType, handler: Handler): void; + off(type: EventType, handler?: Handler): void; off(type: '*', handler: WildcardHandler): void; emit(type: EventType, event?: T): void; @@ -63,7 +63,12 @@ export default function mitt(all?: EventHandlerMap): Emitter { off(type: EventType, handler: Handler) { const handlers = all.get(type); if (handlers) { - handlers.splice(handlers.indexOf(handler) >>> 0, 1); + if (!handler) { + handlers.splice(0, handlers.length); + } + else { + handlers.splice(handlers.indexOf(handler) >>> 0, 1); + } } },