diff --git a/packages/language-core/lib/codegen/globalTypes.ts b/packages/language-core/lib/codegen/globalTypes.ts
index 5f1440070d..f434ec69d9 100644
--- a/packages/language-core/lib/codegen/globalTypes.ts
+++ b/packages/language-core/lib/codegen/globalTypes.ts
@@ -29,6 +29,11 @@ ${decl}const __VLS_intrinsicElements: __VLS_IntrinsicElements;
${decl}const __VLS_directiveBindingRestFields: { instance: null, oldValue: null, modifiers: any, dir: any };
${decl}const __VLS_unref: typeof import('${lib}').unref;
+const __VLS_nativeElements = {
+ ...{} as SVGElementTagNameMap,
+ ...{} as HTMLElementTagNameMap,
+};
+
type __VLS_IntrinsicElements = ${(
target >= 3.3
? `import('${lib}/jsx-runtime').JSX.IntrinsicElements;`
diff --git a/packages/language-core/lib/codegen/template/element.ts b/packages/language-core/lib/codegen/template/element.ts
index 8a13e4161c..68ff00b45e 100644
--- a/packages/language-core/lib/codegen/template/element.ts
+++ b/packages/language-core/lib/codegen/template/element.ts
@@ -333,7 +333,7 @@ export function* generateElement(
const [refName, offset] = yield* generateVScope(options, ctx, node, node.props);
if (refName) {
- ctx.templateRefs.set(refName, [`__VLS_intrinsicElements['${node.tag}']`, offset!]);
+ ctx.templateRefs.set(refName, [`__VLS_nativeElements['${node.tag}']`, offset!]);
}
const slotDir = node.props.find(p => p.type === CompilerDOM.NodeTypes.DIRECTIVE && p.name === 'slot') as CompilerDOM.DirectiveNode;
diff --git a/test-workspace/tsc/passedFixtures/vue3.5/templateRef/template-ref.vue b/test-workspace/tsc/passedFixtures/vue3.5/templateRef/template-ref.vue
index 91fa10bcc7..ff26456f59 100644
--- a/test-workspace/tsc/passedFixtures/vue3.5/templateRef/template-ref.vue
+++ b/test-workspace/tsc/passedFixtures/vue3.5/templateRef/template-ref.vue
@@ -14,7 +14,7 @@ if (comp2.value) {
const comp3 = useTemplateRef('a');
if (comp3.value) {
- exactType(comp3.value.href, {} as string | undefined);
+ exactType(comp3.value.href, {} as string);
}
diff --git a/test-workspace/tsc/passedFixtures/vue3.5/templateRef_native/main.vue b/test-workspace/tsc/passedFixtures/vue3.5/templateRef_native/main.vue
new file mode 100644
index 0000000000..d7afa4b1cd
--- /dev/null
+++ b/test-workspace/tsc/passedFixtures/vue3.5/templateRef_native/main.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+