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 @@ + + +