diff --git a/packages/vue-language-core/src/generators/template.ts b/packages/vue-language-core/src/generators/template.ts index d83fcad3d..c26b23dc5 100644 --- a/packages/vue-language-core/src/generators/template.ts +++ b/packages/vue-language-core/src/generators/template.ts @@ -670,7 +670,7 @@ export function generate( ); } else if (componentVars[tag]) { - codes.push(`const ${var_originalComponent} = __VLS_templateComponents['${componentVars[tag]}'];\n`); + codes.push(`const ${var_originalComponent} = {} as __VLS_AccessComponent;\n`); } else { codes.push(`const ${var_originalComponent} = {} as any;\n`); diff --git a/packages/vue-language-core/src/utils/directorySharedTypes.ts b/packages/vue-language-core/src/utils/directorySharedTypes.ts index f6bcd9156..d2229d3b3 100644 --- a/packages/vue-language-core/src/utils/directorySharedTypes.ts +++ b/packages/vue-language-core/src/utils/directorySharedTypes.ts @@ -29,6 +29,12 @@ type __VLS_GlobalComponents = | 'Teleport' >; +type __VLS_AccessComponent = + K extends keyof L ? L[K] : + K extends keyof G ? G[K] : + K extends keyof T ? T[K] : + any; + // v-for declare function __VLS_getVForSourceType(source: number): [number, number, number][]; declare function __VLS_getVForSourceType(source: string): [string, number, number][];