From 6d763a9dd76d4e3d2bae8b3c6ef50dfb53f58769 Mon Sep 17 00:00:00 2001 From: ktsn Date: Sun, 23 Aug 2020 21:22:19 +0800 Subject: [PATCH 1/3] fix: relax ComponentPublicInstanceConstructor type for class components --- packages/runtime-core/src/componentPublicInstance.ts | 2 +- packages/runtime-core/src/h.ts | 2 +- test-dts/defineComponent.test-d.tsx | 12 +++++++++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/runtime-core/src/componentPublicInstance.ts b/packages/runtime-core/src/componentPublicInstance.ts index 2205e1ae484..62b9ed0972c 100644 --- a/packages/runtime-core/src/componentPublicInstance.ts +++ b/packages/runtime-core/src/componentPublicInstance.ts @@ -107,7 +107,7 @@ export type ComponentPublicInstanceConstructor< __isFragment?: never __isTeleport?: never __isSuspense?: never - new (): T + new (...args: never[]): T } export type CreateComponentPublicInstance< diff --git a/packages/runtime-core/src/h.ts b/packages/runtime-core/src/h.ts index d1fe4f0aceb..4280da4946a 100644 --- a/packages/runtime-core/src/h.ts +++ b/packages/runtime-core/src/h.ts @@ -65,7 +65,7 @@ interface Constructor

{ __isFragment?: never __isTeleport?: never __isSuspense?: never - new (): { $props: P } + new (...args: never[]): { $props: P } } // The following is a series of overloads for providing props validation of diff --git a/test-dts/defineComponent.test-d.tsx b/test-dts/defineComponent.test-d.tsx index 7a88c40bc4e..3929383c443 100644 --- a/test-dts/defineComponent.test-d.tsx +++ b/test-dts/defineComponent.test-d.tsx @@ -94,7 +94,7 @@ describe('with object props', () => { // default + function ffff: { type: Function as PropType<(a: number, b: string) => { a: boolean }>, - default: (a: number, b: string) => ({ a: true }) + default: (_a: number, _b: string) => ({ a: true }) }, validated: { type: String, @@ -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', () => { From b8af0593b0950746077c1eb879b8cd95400b0d64 Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 24 Aug 2020 21:48:35 -0400 Subject: [PATCH 2/3] Update componentPublicInstance.ts --- packages/runtime-core/src/componentPublicInstance.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/runtime-core/src/componentPublicInstance.ts b/packages/runtime-core/src/componentPublicInstance.ts index 62b9ed0972c..28814527150 100644 --- a/packages/runtime-core/src/componentPublicInstance.ts +++ b/packages/runtime-core/src/componentPublicInstance.ts @@ -107,7 +107,7 @@ export type ComponentPublicInstanceConstructor< __isFragment?: never __isTeleport?: never __isSuspense?: never - new (...args: never[]): T + new (...args: any[]): T } export type CreateComponentPublicInstance< From ffdf8b066e8d62402f023c1211e698478ef8a4e6 Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 24 Aug 2020 21:49:27 -0400 Subject: [PATCH 3/3] Update h.ts --- packages/runtime-core/src/h.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/runtime-core/src/h.ts b/packages/runtime-core/src/h.ts index 4280da4946a..1939475b4ef 100644 --- a/packages/runtime-core/src/h.ts +++ b/packages/runtime-core/src/h.ts @@ -65,7 +65,7 @@ interface Constructor

{ __isFragment?: never __isTeleport?: never __isSuspense?: never - new (...args: never[]): { $props: P } + new (...args: any[]): { $props: P } } // The following is a series of overloads for providing props validation of