aboutsummaryrefslogtreecommitdiff
path: root/src/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/index.ts')
-rw-r--r--src/index.ts14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/index.ts b/src/index.ts
index e640292..c681fd0 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -2,8 +2,8 @@ export type EventType = string | symbol;
// An event handler can take an optional event argument
// and should not return a value
-export type Handler = (event?: any) => void;
-export type WildcardHandler = (type: EventType, event?: any) => void
+export type Handler<T = any> = (event?: T) => void;
+export type WildcardHandler = (type: EventType, event?: any) => void;
// An array of all currently registered event handlers for a type
export type EventHandlerList = Array<Handler>;
@@ -13,10 +13,10 @@ export type WildCardEventHandlerList = Array<WildcardHandler>;
export type EventHandlerMap = Map<EventType, EventHandlerList | WildCardEventHandlerList>;
export interface Emitter {
- on(type: EventType, handler: Handler): void;
+ on<T = any>(type: EventType, handler: Handler<T>): void;
on(type: '*', handler: WildcardHandler): void;
- off(type: EventType, handler: Handler): void;
+ off<T = any>(type: EventType, handler: Handler<T>): void;
off(type: '*', handler: WildcardHandler): void;
emit<T = any>(type: EventType, event?: T): void;
@@ -38,7 +38,7 @@ export default function mitt(all?: EventHandlerMap): Emitter {
* @param {Function} handler Function to call in response to given event
* @memberOf mitt
*/
- on(type: EventType, handler: Handler) {
+ on<T = any>(type: EventType, handler: Handler<T>) {
const handlers = all.get(type);
const added = handlers && handlers.push(handler);
if (!added) {
@@ -53,7 +53,7 @@ export default function mitt(all?: EventHandlerMap): Emitter {
* @param {Function} handler Handler function to remove
* @memberOf mitt
*/
- off(type: EventType, handler: Handler) {
+ off<T = any>(type: EventType, handler: Handler<T>) {
const handlers = all.get(type);
if (handlers) {
handlers.splice(handlers.indexOf(handler) >>> 0, 1);
@@ -70,7 +70,7 @@ export default function mitt(all?: EventHandlerMap): Emitter {
* @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler
* @memberOf mitt
*/
- emit(type: EventType, evt: any) {
+ emit<T = any>(type: EventType, evt: T) {
((all.get(type) || []) as EventHandlerList).slice().map((handler) => { handler(evt); });
((all.get('*') || []) as WildCardEventHandlerList).slice().map((handler) => { handler(type, evt); });
}