]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(types): relax ComponentPublicInstanceConstructor type for class components (...
authorKatashin <ktsn55@gmail.com>
Tue, 25 Aug 2020 01:53:30 +0000 (09:53 +0800)
committerGitHub <noreply@github.com>
Tue, 25 Aug 2020 01:53:30 +0000 (21:53 -0400)
packages/runtime-core/src/componentPublicInstance.ts
packages/runtime-core/src/h.ts
test-dts/defineComponent.test-d.tsx

index 2205e1ae484bc5888c433f8b9880d7ef792f05bb..2881452715037d0b9f743e7e826e86ac1f73365d 100644 (file)
@@ -107,7 +107,7 @@ export type ComponentPublicInstanceConstructor<
   __isFragment?: never
   __isTeleport?: never
   __isSuspense?: never
-  new (): T
+  new (...args: any[]): T
 }
 
 export type CreateComponentPublicInstance<
index d1fe4f0acebf6b8003c0e40451139c107bfe145a..1939475b4ef58b637d02015ffb0b9c42749f1256 100644 (file)
@@ -65,7 +65,7 @@ interface Constructor<P = any> {
   __isFragment?: never
   __isTeleport?: never
   __isSuspense?: never
-  new (): { $props: P }
+  new (...args: any[]): { $props: P }
 }
 
 // The following is a series of overloads for providing props validation of
index cd08a428893cb9ebd2d83bad2c83951ee84fae6f..18c3338abeb0cd1b4069a042f3053eb3063e2d0e 100644 (file)
@@ -701,6 +701,16 @@ describe('defineComponent', () => {
       components: { comp }
     })
   })
+
+  test('should accept class components with receiving constructor arguments', () => {
+    class Comp {
+      static __vccOpts = {}
+      constructor(_props: { foo: string }) {}
+    }
+    defineComponent({
+      components: { Comp }
+    })
+  })
 })
 
 describe('emits', () => {