From c38596565527654a276a7e1c0e409c6d6a58486e Mon Sep 17 00:00:00 2001 From: mrkbear Date: Sat, 22 Jan 2022 16:10:24 +0800 Subject: [PATCH] (#60) Core emitter generic optimization --- miniprogram/core/Emitter.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/miniprogram/core/Emitter.ts b/miniprogram/core/Emitter.ts index bc237e1..c649a83 100644 --- a/miniprogram/core/Emitter.ts +++ b/miniprogram/core/Emitter.ts @@ -13,6 +13,10 @@ export type EventHandlerMap> = Map< EventHandlerList >; +// Emitter function type +type IEmitParamType, K extends keyof E> = + E[K] extends ( undefined | void ) ? [K] : [K, E[K]]; + export class Emitter> { /** @@ -74,7 +78,8 @@ export class Emitter> { * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler * @memberOf mitt */ - emit(type: Key, evt: Events[Key]) { + public emit(...param: IEmitParamType): this { + const [ type, evt ] = param; let handlers = this.all!.get(type); if (handlers) { (handlers as EventHandlerList) @@ -83,5 +88,6 @@ export class Emitter> { handler(evt!); }); } + return this; } } \ No newline at end of file