UNPKG

micro-typed-events

Version:

micro-typed-events

15 lines (14 loc) 1.12 kB
declare type ArgumentsType<T> = T extends (...args: infer A) => any ? A : never; export declare type UnsubscribeHandle = () => void; export interface TypedEvents<Listener extends (...args: any[]) => void> { subscribe: (listener: Listener) => UnsubscribeHandle; emit: (...args: ArgumentsType<Listener>) => void; } export declare function createEvents<Listener extends (...args: any[]) => void>(): TypedEvents<Listener>; export declare function createEvents<T0>(): TypedEvents<(arg0: T0) => void>; export declare function createEvents<T0, T1>(): TypedEvents<(arg0: T0, arg1: T1) => void>; export declare function createEvents<T0, T1, T2>(): TypedEvents<(arg0: T0, arg1: T1, arg2: T2) => void>; export declare function createEvents<T0, T1, T2, T3>(): TypedEvents<(arg0: T0, arg1: T1, arg2: T2, arg3: T3) => void>; export declare function createEvents<T0, T1, T2, T3, T4>(): TypedEvents<(arg0: T0, arg1: T1, arg2: T2, arg3: T3, arg4: T4) => void>; export declare function createEvents<T0, T1, T2, T3, T4, T5>(): TypedEvents<(arg0: T0, arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => void>; export {};