diff --git a/packages/language-core/lib/codegen/globalTypes.ts b/packages/language-core/lib/codegen/globalTypes.ts index 93134095e0..7dd3b48c6b 100644 --- a/packages/language-core/lib/codegen/globalTypes.ts +++ b/packages/language-core/lib/codegen/globalTypes.ts @@ -134,7 +134,7 @@ export function generateGlobalTypes(options: VueCompilerOptions) { type __VLS_ResolveDirectives = { [K in keyof T & string as \`v\${Capitalize}\`]: T[K]; }; - type __VLS_PrettifyGlobal = { [K in keyof T as K]: T[K]; } & {}; + type __VLS_PrettifyGlobal = (T extends any ? { [K in keyof T]: T[K]; } : { [K in keyof T as K]: T[K]; }) & {}; type __VLS_WithDefaultsGlobal = { [K in keyof P as K extends keyof D ? K : never]-?: P[K]; } & { diff --git a/packages/language-core/lib/codegen/localTypes.ts b/packages/language-core/lib/codegen/localTypes.ts index 84e65d4aec..8e212cd2c7 100644 --- a/packages/language-core/lib/codegen/localTypes.ts +++ b/packages/language-core/lib/codegen/localTypes.ts @@ -17,7 +17,8 @@ type __VLS_WithDefaultsLocal = { ); const PrettifyLocal = defineHelper( `__VLS_PrettifyLocal`, - () => `type __VLS_PrettifyLocal = { [K in keyof T as K]: T[K]; } & {}${endOfLine}`, + () => + `type __VLS_PrettifyLocal = (T extends any ? { [K in keyof T]: T[K]; } : { [K in keyof T as K]: T[K]; }) & {}${endOfLine}`, ); const WithSlots = defineHelper( `__VLS_WithSlots`, diff --git a/packages/tsc/tests/__snapshots__/dts.spec.ts.snap b/packages/tsc/tests/__snapshots__/dts.spec.ts.snap index 3061be7155..9e66bd021a 100644 --- a/packages/tsc/tests/__snapshots__/dts.spec.ts.snap +++ b/packages/tsc/tests/__snapshots__/dts.spec.ts.snap @@ -79,9 +79,11 @@ exports[`vue-tsc-dts > Input: generic/component.vue, Output: generic/component.v }; declare const _default: typeof __VLS_export; export default _default; -type __VLS_PrettifyLocal = { +type __VLS_PrettifyLocal = (T extends any ? { + [K in keyof T]: T[K]; +} : { [K in keyof T as K]: T[K]; -} & {}; +}) & {}; " `; @@ -110,9 +112,11 @@ exports[`vue-tsc-dts > Input: generic/custom-extension-component.cext, Output: g }; declare const _default: typeof __VLS_export; export default _default; -type __VLS_PrettifyLocal = { +type __VLS_PrettifyLocal = (T extends any ? { + [K in keyof T]: T[K]; +} : { [K in keyof T as K]: T[K]; -} & {}; +}) & {}; " `; diff --git a/test-workspace/tsc/passedFixtures/vue3/#5592/child.vue b/test-workspace/tsc/passedFixtures/vue3/#5592/child.vue new file mode 100644 index 0000000000..748369e89e --- /dev/null +++ b/test-workspace/tsc/passedFixtures/vue3/#5592/child.vue @@ -0,0 +1,8 @@ + + + diff --git a/test-workspace/tsc/passedFixtures/vue3/#5592/main.vue b/test-workspace/tsc/passedFixtures/vue3/#5592/main.vue new file mode 100644 index 0000000000..4e7c74e34c --- /dev/null +++ b/test-workspace/tsc/passedFixtures/vue3/#5592/main.vue @@ -0,0 +1,9 @@ + + +