From bd2fc670c78424cd58e0150403c72d3a920a90cb Mon Sep 17 00:00:00 2001 From: Red Huang Date: Sat, 19 Oct 2024 03:15:40 +0800 Subject: [PATCH] fix(runtime-core): type refs and el backdoor issue for this type --- .../dts-test/defineComponent.test-d.tsx | 29 +++++++++++++++++++ .../runtime-core/src/apiDefineComponent.ts | 4 ++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/packages-private/dts-test/defineComponent.test-d.tsx b/packages-private/dts-test/defineComponent.test-d.tsx index fda3ca4856c..ddd0d98d400 100644 --- a/packages-private/dts-test/defineComponent.test-d.tsx +++ b/packages-private/dts-test/defineComponent.test-d.tsx @@ -1804,6 +1804,35 @@ describe('__typeEmits backdoor, call signature syntax', () => { c.$emit('update', 123) }) +describe('__typeRefs backdoor, for this type', () => { + type Refs = { + foo: number + } + defineComponent({ + __typeRefs: {} as { child: ComponentInstance }, + mounted() { + expectType>(this.$refs.child) + }, + }) + const Child = defineComponent({ + __typeRefs: {} as Refs, + methods: { + test() { + expectType(this.$refs.foo) + }, + }, + }) +}) + +describe('__typeEl backdoor, for this type', () => { + defineComponent({ + __typeEl: {} as HTMLAnchorElement, + mounted() { + expectType(this.$el) + }, + }) +}) + describe('__typeRefs backdoor, object syntax', () => { type Refs = { foo: number diff --git a/packages/runtime-core/src/apiDefineComponent.ts b/packages/runtime-core/src/apiDefineComponent.ts index 2ce870f0141..7bcda6591ae 100644 --- a/packages/runtime-core/src/apiDefineComponent.ts +++ b/packages/runtime-core/src/apiDefineComponent.ts @@ -272,7 +272,9 @@ export function defineComponent< Slots, LocalComponents, Directives, - Exposed + Exposed, + TypeRefs, + TypeEl > >, ): DefineComponent<