diff --git a/vue-language-tools/vue-language-core/src/generators/script.ts b/vue-language-tools/vue-language-core/src/generators/script.ts index 573cd8450..922f979aa 100644 --- a/vue-language-tools/vue-language-core/src/generators/script.ts +++ b/vue-language-tools/vue-language-core/src/generators/script.ts @@ -417,7 +417,7 @@ export function generate( codeGen.push(`InstanceType['$emit']`); } codeGen.push(`,\n`); - if (htmlGen?.slotsNum) { + if (htmlGen?.hasSlot) { codeGen.push(`children: ReturnType,\n`); } else { @@ -426,7 +426,7 @@ export function generate( codeGen.push(`};\n`); } else { - if (htmlGen?.slotsNum) { + if (htmlGen?.hasSlot) { usedTypes.WithTemplateSlots = true; codeGen.push(`return {} as __VLS_WithTemplateSlots>;\n`); } diff --git a/vue-language-tools/vue-language-core/src/generators/template.ts b/vue-language-tools/vue-language-core/src/generators/template.ts index a3bb2e8f5..6688317f2 100644 --- a/vue-language-tools/vue-language-core/src/generators/template.ts +++ b/vue-language-tools/vue-language-core/src/generators/template.ts @@ -75,7 +75,7 @@ export function generate( const scopedClasses: { className: string, offset: number; }[] = []; const blockConditions: string[] = []; - let slotsNum = 0; + let hasSlot = false; let elementIndex = 0; formatCodeGen.push('export { };\n'); @@ -96,18 +96,19 @@ export function generate( cssCodeGen, tagNames, identifiers, - slotsNum, + hasSlot, }; function declareSlots() { codeGen.push(`declare var __VLS_slots:\n`); for (const [exp, slot] of slotExps) { + hasSlot = true; codeGen.push(`Record, (_: typeof ${slot.varName}) => any> &\n`); } codeGen.push(`{\n`); for (const [name, slot] of slots) { - slotsNum++; + hasSlot = true; writeObjectProperty( name, slot.loc, // TODO: SourceMaps.MappingKind.Expand diff --git a/vue-language-tools/vue-language-core/src/utils/localTypes.ts b/vue-language-tools/vue-language-core/src/utils/localTypes.ts index fa2294759..977daa410 100644 --- a/vue-language-tools/vue-language-core/src/utils/localTypes.ts +++ b/vue-language-tools/vue-language-core/src/utils/localTypes.ts @@ -10,7 +10,6 @@ export function getTypesCode( const libName = getVueLibraryName(vueVersion); const slots = getSlotsPropertyName(vueVersion); return ` -import * as vue from '${libName}'; import type { FunctionalComponent, EmitsOptions, @@ -36,7 +35,7 @@ export type GlobalComponents = & PickNotAny // @ts-ignore & PickNotAny - & Pick