Kaynağa Gözat

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

close #11836
山吹色御守 1 yıl önce
ebeveyn
işleme
dad6738099
1 değiştirilmiş dosya ile 7 ekleme ve 10 silme
  1. 7 10
      packages/runtime-core/src/componentEmits.ts

+ 7 - 10
packages/runtime-core/src/componentEmits.ts

@@ -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}`