@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
7 lines (6 loc) • 639 B
TypeScript
declare type ObjectEmitsOptions = Record<string, ((...args: any[]) => any) | null>;
declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
export declare type EmitFn<Options = ObjectEmitsOptions, Event extends keyof Options = keyof Options> = Options extends Array<infer V> ? (event: V, ...args: any[]) => void : unknown extends Options ? (event: string, ...args: any[]) => void : UnionToIntersection<{
[key in Event]: Options[key] extends (...args: infer Args) => any ? (event: key, ...args: Args) => void : (event: key, ...args: any[]) => void;
}[Event]>;
export {};