diff --git a/src/index.ts b/src/index.ts index dfc0c1f..c88cc19 100644 --- a/src/index.ts +++ b/src/index.ts @@ -58,13 +58,14 @@ export default function mitt>( * @memberOf mitt */ on(type: Key, handler: GenericEventHandler) { - const handlers: Array | undefined = all!.get(type); - if (handlers) { - handlers.push(handler); - } - else { - all!.set(type, [handler] as EventHandlerList); + let handlers: Array | undefined = all!.get(type); + if (!handlers) { + all!.set(type, handlers = []); } + handlers.push(handler); + return () => { + handlers!.splice(handlers!.indexOf(handler) >>> 0, 1); + }; }, /** @@ -75,13 +76,13 @@ export default function mitt>( * @memberOf mitt */ off(type: Key, handler?: GenericEventHandler) { - const handlers: Array | undefined = all!.get(type); + let handlers: Array | undefined = all!.get(type); if (handlers) { if (handler) { handlers.splice(handlers.indexOf(handler) >>> 0, 1); } else { - all!.set(type, []); + all!.set(type, handlers = []); } } },