mirror of https://github.com/vuejs/core.git
fix(types): correctly infer `TypeEmits` with both tuple and function syntax (#11840)
close #11836
This commit is contained in:
parent
632e163a41
commit
dad6738099
|
@ -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}`
|
||||||
|
|
Loading…
Reference in New Issue