diff --git a/packages/vue-language-core/src/generators/script.ts b/packages/vue-language-core/src/generators/script.ts index 1ccb5eded9..70cb65cdb1 100644 --- a/packages/vue-language-core/src/generators/script.ts +++ b/packages/vue-language-core/src/generators/script.ts @@ -671,9 +671,9 @@ declare function defineProp(value?: T | (() => T), required?: boolean, rest?: generateConstNameOption(); if (scriptSetupRanges?.slotsTypeArg && sfc.scriptSetup) { - codes.push(`var __VLS_slots!: __VLS_NormalizeSlots<`); + codes.push(`var __VLS_slots!: `); addExtraReferenceVirtualCode('scriptSetup', scriptSetupRanges.slotsTypeArg.start, scriptSetupRanges.slotsTypeArg.end); - codes.push('>;\n'); + codes.push(';\n'); }; codes.push(`function __VLS_template() {\n`); diff --git a/packages/vue-language-core/src/generators/template.ts b/packages/vue-language-core/src/generators/template.ts index 8c99c5c84a..2dd70cecb8 100644 --- a/packages/vue-language-core/src/generators/template.ts +++ b/packages/vue-language-core/src/generators/template.ts @@ -1596,6 +1596,7 @@ export function generate( if (hasScriptSetupSlots) { codes.push( + '__VLS_normalizeSlot(', ['', 'template', node.loc.start.offset, capabilitiesPresets.diagnosticOnly], '__VLS_slots[', ['', 'template', node.loc.start.offset, capabilitiesPresets.diagnosticOnly], @@ -1603,7 +1604,7 @@ export function generate( ['', 'template', node.loc.end.offset, capabilitiesPresets.diagnosticOnly], ']', ['', 'template', node.loc.end.offset, capabilitiesPresets.diagnosticOnly], - '?.(', + ')?.(', ['', 'template', startTagOffset, capabilitiesPresets.diagnosticOnly], '{\n', ); diff --git a/packages/vue-language-core/src/utils/globalTypes.ts b/packages/vue-language-core/src/utils/globalTypes.ts index e34ec08007..b307dfc726 100644 --- a/packages/vue-language-core/src/utils/globalTypes.ts +++ b/packages/vue-language-core/src/utils/globalTypes.ts @@ -110,10 +110,8 @@ declare function __VLS_pickFunctionalComponentCtx(comp: T, compInstance: K T extends (props: any, ctx: infer Ctx) => any ? Ctx : any >; type __VLS_AsFunctionOrAny = unknown extends F ? any : ((...args: any) => any) extends F ? F : any; -type __VLS_NormalizeSlots = { - [K in keyof T]: T[K] extends () => infer R ? (arg: any) => R : T[K] -} +declare function __VLS_normalizeSlot(s: S): S extends () => infer R ? (props: {}) => R : S; declare function __VLS_componentProps(comp: T, fnReturn: K): __VLS_PickNotAny extends { __ctx: { props: infer P } } ? NonNullable

: T extends (props: infer P, ...args: any) => any ? NonNullable

: