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> =
T extends Record<string, any[]>
? {
[K in keyof T]: T[K] extends [...args: infer Args]
? (...args: Args) => any
: () => any
}
: T extends (...args: any[]) => any
? ParametersToFns<OverloadParameters<T>>
: {}
export type TypeEmitsToOptions<T extends ComponentTypeEmits> = {
[K in keyof T & string]: T[K] extends [...args: infer Args]
? (...args: Args) => any
: () => any
} & (T extends (...args: any[]) => any
? ParametersToFns<OverloadParameters<T>>
: {})
type ParametersToFns<T extends any[]> = {
[K in T[0]]: K extends `${infer C}`