diff --git a/packages/vue-component-type-helpers/index.d.ts b/packages/vue-component-type-helpers/index.d.ts index 3d543675c8..fff89a5687 100644 --- a/packages/vue-component-type-helpers/index.d.ts +++ b/packages/vue-component-type-helpers/index.d.ts @@ -24,7 +24,7 @@ export type ComponentEmit = export type ComponentExposed = T extends new () => infer E ? E : - T extends (props: any, ctx: { expose(exposed: infer E): any; }, ...args: any) => any ? NonNullable : + T extends (props: any, ctx: any, expose: (exposed: infer E) => any, ...args: any) => any ? NonNullable : {}; /** diff --git a/packages/vue-language-core/src/generators/script.ts b/packages/vue-language-core/src/generators/script.ts index 4e04ac7856..b272b23e6d 100644 --- a/packages/vue-language-core/src/generators/script.ts +++ b/packages/vue-language-core/src/generators/script.ts @@ -317,6 +317,7 @@ export function generate( `& import('${vueCompilerOptions.lib}').ComponentCustomProps,\n`, ); codes.push(`__VLS_ctx?: Pick, 'attrs' | 'emit' | 'slots'>,\n`); + codes.push(`__VLS_expose?: NonNullable>['expose'],\n`); codes.push('__VLS_setup = (async () => {\n'); scriptSetupGeneratedOffset = generateSetupFunction(true, 'none', definePropMirrors); diff --git a/packages/vue-test-workspace/vue-tsc/non-strict-template/components/main.vue b/packages/vue-test-workspace/vue-tsc/non-strict-template/components/main.vue index 586daa5f85..e86d190ac3 100644 --- a/packages/vue-test-workspace/vue-tsc/non-strict-template/components/main.vue +++ b/packages/vue-test-workspace/vue-tsc/non-strict-template/components/main.vue @@ -65,6 +65,7 @@ const ScriptSetupDefaultPropsExact = defineComponent({ declare const ScriptSetupGenericExact: ( _props: NonNullable>['props'] & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, _ctx?: Pick>, 'attrs' | 'emit' | 'slots'>, + _expose?: NonNullable>['expose'], _setup?: Promise<{ props: { foo: T } & { [K in keyof JSX.ElementChildrenAttribute]?: { default?(data: T): any } }, attrs: any, diff --git a/packages/vue-test-workspace/vue-tsc/non-strict-template/defineProp_B/main.vue b/packages/vue-test-workspace/vue-tsc/non-strict-template/defineProp_B/main.vue index cdf882a385..b4a7ff5059 100644 --- a/packages/vue-test-workspace/vue-tsc/non-strict-template/defineProp_B/main.vue +++ b/packages/vue-test-workspace/vue-tsc/non-strict-template/defineProp_B/main.vue @@ -21,6 +21,7 @@ const ScriptSetupExact = defineComponent({ declare const ScriptSetupGenericExact: ( _props: NonNullable>['props'] & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, _ctx?: Pick>, 'attrs' | 'emit' | 'slots'>, + _expose?: NonNullable>['expose'], _setup?: Promise<{ props: { a?: T | undefined;