Skip to content

Commit 4da6881

Browse files
authoredSep 26, 2024··
fix(types): correct type inference of union event names (#12022)
1 parent 6001e5c commit 4da6881

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed
 

‎packages/runtime-core/src/componentEmits.ts

+14-2
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,23 @@ export type TypeEmitsToOptions<T extends ComponentTypeEmits> = {
6666
: {})
6767

6868
type ParametersToFns<T extends any[]> = {
69-
[K in T[0]]: K extends `${infer C}`
70-
? (...args: T extends [C, ...infer Args] ? Args : never) => any
69+
[K in T[0]]: IsStringLiteral<K> extends true
70+
? (
71+
...args: T extends [e: infer E, ...args: infer P]
72+
? K extends E
73+
? P
74+
: never
75+
: never
76+
) => any
7177
: never
7278
}
7379

80+
type IsStringLiteral<T> = T extends string
81+
? string extends T
82+
? false
83+
: true
84+
: false
85+
7486
export type ShortEmitsToObject<E> =
7587
E extends Record<string, any[]>
7688
? {

0 commit comments

Comments
 (0)
Please sign in to comment.