]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
refactor(types): simplify `EmitsToProps` types (#9788)
author丶远方 <yangpanteng@gmail.com>
Mon, 11 Dec 2023 12:01:36 +0000 (20:01 +0800)
committerGitHub <noreply@github.com>
Mon, 11 Dec 2023 12:01:36 +0000 (20:01 +0800)
packages/runtime-core/src/componentEmits.ts

index f3a30f7c953bd137e1484adb7737c17d6204e212..d56877adb5819bd307d2d2f91afe74a824e71c59 100644 (file)
@@ -38,19 +38,18 @@ export type EmitsOptions = ObjectEmitsOptions | string[]
 
 export type EmitsToProps<T extends EmitsOptions> = T extends string[]
   ? {
-      [K in string & `on${Capitalize<T[number]>}`]?: (...args: any[]) => any
+      [K in `on${Capitalize<T[number]>}`]?: (...args: any[]) => any
     }
   : T extends ObjectEmitsOptions
     ? {
-        [K in string &
-          `on${Capitalize<string & keyof T>}`]?: K extends `on${infer C}`
-          ? T[Uncapitalize<C>] extends null
-            ? (...args: any[]) => any
-            : (
-                ...args: T[Uncapitalize<C>] extends (...args: infer P) => any
-                  ? P
+        [K in `on${Capitalize<string & keyof T>}`]?: K extends `on${infer C}`
+          ? (
+              ...args: T[Uncapitalize<C>] extends (...args: infer P) => any
+                ? P
+                : T[Uncapitalize<C>] extends null
+                  ? any[]
                   : never
-              ) => any
+            ) => any
           : never
       }
     : {}