From 6b13f8f4385826803631a14634ff65d8338be8ae Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Sun, 23 Apr 2023 17:35:40 +0800 Subject: [PATCH] fix: support props type-checking for functional components with one parameter close #2686 --- packages/vue-language-core/src/generators/template.ts | 2 +- packages/vue-language-core/src/utils/localTypes.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/vue-language-core/src/generators/template.ts b/packages/vue-language-core/src/generators/template.ts index 2a90f1b3d..6c409c9a7 100644 --- a/packages/vue-language-core/src/generators/template.ts +++ b/packages/vue-language-core/src/generators/template.ts @@ -538,7 +538,7 @@ export function generate( ...createPropsCode(node, 'props', propsFailedExps), '}', ['', 'template', startTagOffset + node.tag.length, capabilitiesPresets.diagnosticOnly], // diagnostic end - ', {} as any);\n', + `, ...(await import('./__VLS_types')).functionalComponentArgsRest(${componentVar}));\n`, ); if (node.tag !== 'template') { diff --git a/packages/vue-language-core/src/utils/localTypes.ts b/packages/vue-language-core/src/utils/localTypes.ts index 15ed41f94..d46b17cc1 100644 --- a/packages/vue-language-core/src/utils/localTypes.ts +++ b/packages/vue-language-core/src/utils/localTypes.ts @@ -95,6 +95,7 @@ export declare function asFunctionalComponent any ? (props: {}, ctx?: any) => ReturnType : T extends (...args: any) => any ? T : (_: T & Record, ctx?: any) => { __ctx?: { attrs?: unknown, expose?: unknown, slots?: unknown, emit?: unknown }, __props?: T & Record }; // IntrinsicElement +declare function functionalComponentArgsRest(t: T): Parameters['length'] extends 2 ? [any] : []; export declare function pickEvent(emit: Emit, emitKey: K, event: E): FillingEventArg< PickNotAny< AsFunctionOrAny>,