fix(types): correctly infer `TypeEmits` with both tuple and function syntax (#11840)

close #11836
This commit is contained in:
山吹色御守 2024-09-06 16:10:56 +08:00 committed by GitHub
parent 632e163a41
commit dad6738099
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 7 additions and 10 deletions

View File

@ -57,16 +57,13 @@ export type EmitsToProps<T extends EmitsOptions | ComponentTypeEmits> =
} }
: {} : {}
export type TypeEmitsToOptions<T extends ComponentTypeEmits> = export type TypeEmitsToOptions<T extends ComponentTypeEmits> = {
T extends Record<string, any[]> [K in keyof T & string]: T[K] extends [...args: infer Args]
? { ? (...args: Args) => any
[K in keyof T]: T[K] extends [...args: infer Args] : () => any
? (...args: Args) => any } & (T extends (...args: any[]) => any
: () => any ? ParametersToFns<OverloadParameters<T>>
} : {})
: T extends (...args: any[]) => any
? ParametersToFns<OverloadParameters<T>>
: {}
type ParametersToFns<T extends any[]> = { type ParametersToFns<T extends any[]> = {
[K in T[0]]: K extends `${infer C}` [K in T[0]]: K extends `${infer C}`