micro-typed-events
Version:
micro-typed-events
15 lines (14 loc) • 1.12 kB
TypeScript
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 {};