diff --git a/packages/vue-language-core/src/plugins/vue-tsx.ts b/packages/vue-language-core/src/plugins/vue-tsx.ts index 45e2095635..8eb018c24b 100644 --- a/packages/vue-language-core/src/plugins/vue-tsx.ts +++ b/packages/vue-language-core/src/plugins/vue-tsx.ts @@ -24,7 +24,7 @@ const plugin: VueLanguagePlugin = (ctx) => { const tsx = useTsx(fileName, sfc); const fileNames: string[] = []; - if (['js', 'ts', 'jsx', 'tsx'].includes(tsx.lang.value)) { + if (['ts', 'tsx'].includes(tsx.lang.value)) { fileNames.push(fileName + '.' + tsx.lang.value); } @@ -117,10 +117,16 @@ export default plugin; function createTsx(fileName: string, _sfc: Sfc, { vueCompilerOptions, compilerOptions, codegenStack }: Parameters[0]) { const lang = computed(() => { - return !_sfc.script && !_sfc.scriptSetup ? 'ts' - : _sfc.scriptSetup && _sfc.scriptSetup.lang !== 'js' ? _sfc.scriptSetup.lang - : _sfc.script && _sfc.script.lang !== 'js' ? _sfc.script.lang - : 'js'; + let lang = 'ts'; + + if (_sfc.scriptSetup && _sfc.scriptSetup.lang !== 'js') { + lang = _sfc.scriptSetup.lang; + } else if (_sfc.script && _sfc.script.lang !== 'js') { + lang = _sfc.script.lang; + } + + // Normalize 'js*' to 'ts*' as generated files are technically written in TypeScript. + return lang.replace(/^js/, 'ts'); }); const scriptRanges = computed(() => _sfc.scriptAst diff --git a/packages/vue-test-workspace/vue-tsc/non-strict-template/#3121/main.vue b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3121/main.vue index 36fcd2011a..64d1961bca 100644 --- a/packages/vue-test-workspace/vue-tsc/non-strict-template/#3121/main.vue +++ b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3121/main.vue @@ -4,8 +4,10 @@ v-for="col in slotFilters" :key="col" #[`filter-cell-${col}`]="{ column }" - > + >{{ column }} - + diff --git a/packages/vue-test-workspace/vue-tsc/non-strict-template/#3353/main.vue b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3353/main.vue index bd5ee88545..38c87c7124 100644 --- a/packages/vue-test-workspace/vue-tsc/non-strict-template/#3353/main.vue +++ b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3353/main.vue @@ -1,3 +1,4 @@