From: 山吹色御守 <85992002+KazariEX@users.noreply.github.com> Date: Thu, 26 Sep 2024 09:00:05 +0000 (+0800) Subject: fix(types): correct type inference of union event names (#12022) X-Git-Tag: v3.5.9~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4da688141d9e7c15b622c289deaa81b11845b2c7;p=thirdparty%2Fvuejs%2Fcore.git fix(types): correct type inference of union event names (#12022) --- diff --git a/packages/runtime-core/src/componentEmits.ts b/packages/runtime-core/src/componentEmits.ts index b1be1c9ed0..db52bc88c3 100644 --- a/packages/runtime-core/src/componentEmits.ts +++ b/packages/runtime-core/src/componentEmits.ts @@ -66,11 +66,23 @@ export type TypeEmitsToOptions = { : {}) type ParametersToFns = { - [K in T[0]]: K extends `${infer C}` - ? (...args: T extends [C, ...infer Args] ? Args : never) => any + [K in T[0]]: IsStringLiteral extends true + ? ( + ...args: T extends [e: infer E, ...args: infer P] + ? K extends E + ? P + : never + : never + ) => any : never } +type IsStringLiteral = T extends string + ? string extends T + ? false + : true + : false + export type ShortEmitsToObject = E extends Record ? {