UNPKG

strong-events

Version:

Strong Typed Event Emitter for TypeScript / JavaScript.

19 lines (18 loc) 955 B
declare type FunctionParameters<T extends (...args: any[]) => any> = T extends (...args: infer P) => any ? P : never; export declare class EventEmitter<CallbackSignature extends (...args: any[]) => any> { handlers: Array<CallbackSignature>; register(cb: CallbackSignature, once?: boolean): this; invoke(...args: FunctionParameters<CallbackSignature>): void; invokeAsync(...args: FunctionParameters<CallbackSignature>): Promise<any[]>; remove(cb: CallbackSignature): void; clear(): void; } export declare function createSignal<CallbackSignature extends (...args: any[]) => void | Promise<any>>(): { (this: any, cb: CallbackSignature): EventEmitter<CallbackSignature>; once(cb: CallbackSignature): void; remove(cb: CallbackSignature): void; invoke(...args: FunctionParameters<CallbackSignature>): void; invokeAsync(...args: FunctionParameters<CallbackSignature>): Promise<any[]>; clear(): void; }; export {};