From d51404f15d8789085305d11ecacdddc4d90e4b6a Mon Sep 17 00:00:00 2001 From: SerKo Date: Wed, 19 Nov 2025 21:41:30 +0800 Subject: [PATCH 1/3] fix(runtime-core): keep options API typing intact when `expose` is used --- packages/runtime-core/src/apiDefineComponent.ts | 2 +- packages/runtime-core/src/componentOptions.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/runtime-core/src/apiDefineComponent.ts b/packages/runtime-core/src/apiDefineComponent.ts index 68155e831a3..e83715f6a39 100644 --- a/packages/runtime-core/src/apiDefineComponent.ts +++ b/packages/runtime-core/src/apiDefineComponent.ts @@ -272,7 +272,7 @@ export function defineComponent< Slots, LocalComponents, Directives, - Exposed + string > >, ): DefineComponent< diff --git a/packages/runtime-core/src/componentOptions.ts b/packages/runtime-core/src/componentOptions.ts index 35f2f0cfaf5..fc41b04a9d4 100644 --- a/packages/runtime-core/src/componentOptions.ts +++ b/packages/runtime-core/src/componentOptions.ts @@ -1194,7 +1194,7 @@ export type ComponentOptionsWithoutProps< S, LC, Directives, - Exposed + string > > @@ -1256,7 +1256,7 @@ export type ComponentOptionsWithArrayProps< S, LC, Directives, - Exposed + string > > From b3d4e08cc36632eae228f48daa5f3016f4730bda Mon Sep 17 00:00:00 2001 From: SerKo Date: Wed, 19 Nov 2025 21:42:58 +0800 Subject: [PATCH 2/3] test: add dts fixture --- .../dts-test/defineComponent.test-d.tsx | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/packages-private/dts-test/defineComponent.test-d.tsx b/packages-private/dts-test/defineComponent.test-d.tsx index 1967668dceb..2cf7d2eeaac 100644 --- a/packages-private/dts-test/defineComponent.test-d.tsx +++ b/packages-private/dts-test/defineComponent.test-d.tsx @@ -2107,3 +2107,38 @@ defineComponent({ expectType(this.$props) }, }) + +// expose should not break other instance properties +defineComponent({ + setup() { + const setup1 = ref('setup1') + const setup2 = ref('setup2') + return { setup1, setup2 } + }, + data() { + return { + data1: 1, + } + }, + props: { + props1: { + type: String, + }, + }, + methods: { + methods1() { + return `methods1` + }, + }, + computed: { + computed1() { + this.setup1 + this.setup2 + this.data1 + this.props1 + this.methods1() + return `computed1` + }, + }, + expose: ['setup1'], +}) From cba4209c9bf6602f56d8e6cb6789e0043e4ef85a Mon Sep 17 00:00:00 2001 From: SerKo Date: Wed, 19 Nov 2025 21:54:55 +0800 Subject: [PATCH 3/3] chore: update issue id in comment --- packages-private/dts-test/defineComponent.test-d.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages-private/dts-test/defineComponent.test-d.tsx b/packages-private/dts-test/defineComponent.test-d.tsx index 2cf7d2eeaac..9dc5bf87135 100644 --- a/packages-private/dts-test/defineComponent.test-d.tsx +++ b/packages-private/dts-test/defineComponent.test-d.tsx @@ -2108,7 +2108,7 @@ defineComponent({ }, }) -// expose should not break other instance properties +// #14117 defineComponent({ setup() { const setup1 = ref('setup1')