diff --git a/packages/vue-language-core/src/generators/script.ts b/packages/vue-language-core/src/generators/script.ts index 4747aafb42..d3bc08318d 100644 --- a/packages/vue-language-core/src/generators/script.ts +++ b/packages/vue-language-core/src/generators/script.ts @@ -377,7 +377,7 @@ export function generate( //#endregion codes.push('return {} as {\n'); - codes.push(`props: __VLS_Prettify> & typeof __VLS_fnPropsSlots & typeof __VLS_defaultProps,\n`); + codes.push(`props: __VLS_Prettify<__VLS_OmitKeepDiscriminatedUnion> & typeof __VLS_fnPropsSlots & typeof __VLS_defaultProps,\n`); codes.push(`expose(exposed: import('${vueCompilerOptions.lib}').ShallowUnwrapRef<${scriptSetupRanges.expose.define ? 'typeof __VLS_exposed' : '{}'}>): void,\n`); codes.push('attrs: any,\n'); codes.push('slots: ReturnType,\n'); diff --git a/packages/vue-language-core/src/utils/globalTypes.ts b/packages/vue-language-core/src/utils/globalTypes.ts index af10b93cbd..df049fca19 100644 --- a/packages/vue-language-core/src/utils/globalTypes.ts +++ b/packages/vue-language-core/src/utils/globalTypes.ts @@ -15,6 +15,11 @@ type __VLS_PickNotAny = __VLS_IsAny extends true ? B : A; type __VLS_Prettify = { [K in keyof T]: T[K]; } & {}; +type __VLS_OmitKeepDiscriminatedUnion = + T extends any + ? Pick> + : never; + type __VLS_GlobalComponents = __VLS_PickNotAny & __VLS_PickNotAny diff --git a/packages/vue-test-workspace/vue-tsc/non-strict-template/#3672/child.vue b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3672/child.vue new file mode 100644 index 0000000000..1b85fedba0 --- /dev/null +++ b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3672/child.vue @@ -0,0 +1,15 @@ + diff --git a/packages/vue-test-workspace/vue-tsc/non-strict-template/#3672/main.vue b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3672/main.vue new file mode 100644 index 0000000000..c02e91579d --- /dev/null +++ b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3672/main.vue @@ -0,0 +1,13 @@ + + +