aboutsummaryrefslogtreecommitdiff
path: root/src/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/index.ts')
-rw-r--r--src/index.ts16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/index.ts b/src/index.ts
index f0a2ebb..e1503e2 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -27,21 +27,22 @@ export interface Emitter {
* @name mitt
* @returns {Mitt}
*/
-export default function mitt(all: EventHandlerMap): Emitter {
+export default function mitt(all?: EventHandlerMap): Emitter {
all = all || new Map();
return {
/**
* Register an event handler for the given type.
- *
* @param {string|symbol} type Type of event to listen for, or `"*"` for all events
* @param {Function} handler Function to call in response to given event
* @memberOf mitt
*/
on(type: EventType, handler: Handler) {
- const handlers = (all.get(type) || []);
- handlers.push(handler);
- all.set(type, handlers);
+ const handlers = all.get(type);
+ const added = handlers && handlers.push(handler);
+ if (!added) {
+ all.set(type, [handler]);
+ }
},
/**
@@ -52,8 +53,9 @@ export default function mitt(all: EventHandlerMap): Emitter {
* @memberOf mitt
*/
off(type: EventType, handler: Handler) {
- if (all.has(type)) {
- all.get(type).splice(all.get(type).indexOf(handler) >>> 0, 1);
+ const handlers = all.get(type);
+ if (handlers) {
+ handlers.splice(handlers.indexOf(handler) >>> 0, 1);
}
},