Skip to content

[vue-tsc] Generic Props gets Inferred as unknown #5592

@unrevised6419

Description

@unrevised6419

Vue - Official extension or vue-tsc version

3.0.5

VSCode version

1.102.3

Vue version

3.5.18

TypeScript version

5.8.0

System Info

System: OS: macOS 26.0 CPU: (8) arm64 Apple M1 Memory: 267.22 MB / 16.00 GB Shell: 5.9 - /bin/zsh Binaries: Node: 22.15.0 - ~/.nvm/versions/node/v22.15.0/bin/node Yarn: 2.4.3 - ~/.nvm/versions/node/v22.15.0/bin/yarn npm: 11.3.0 - ~/.nvm/versions/node/v22.15.0/bin/npm pnpm: 9.15.9 - ~/.nvm/versions/node/v22.15.0/bin/pnpm Browsers: Brave Browser: 138.1.80.125 Chrome: 138.0.7204.184 Safari: 26.0

package.json dependencies

{ "dependencies": { "vue": "^3.5.18" }, "devDependencies": { "@tsconfig/node22": "^22.0.1", "@types/node": "^22.14.0", "@vitejs/plugin-vue": "^5.2.3", "@vue/tsconfig": "^0.7.0", "npm-run-all2": "^7.0.2", "typescript": "~5.8.0", "vite": "^6.2.4", "vite-plugin-vue-devtools": "^7.7.2", "vue-tsc": "^3.0.5" } }

Steps to reproduce

Having this component

LocalScope.vue

<script setup lang="ts" generic="T"> defineOptions({ inheritAttrs: false }); defineProps</* @vue-ignore */ T>(); </script> <template>	<slot v-bind="$attrs as T" /> </template>

And this usage

<script setup lang="ts"> import LocalScope from './LocalScope.vue'; </script> <template> <LocalScope #default="{ foo, bar }" :foo="42" bar="baz"> {{ foo }} {{ bar }} </LocalScope> </template>

With vue-tsc@3, running npx vue-tsc --build, we have such results

src/App.vue:6:27 - error TS2339: Property 'foo' does not exist on type 'unknown'. 6 <LocalScope #default="{ foo, bar }" :foo="42" bar="baz"> ~~~ src/App.vue:6:32 - error TS2339: Property 'bar' does not exist on type 'unknown'. 6 <LocalScope #default="{ foo, bar }" :foo="42" bar="baz"> ~~~ Found 2 errors.

What is expected?

With vue-tsc@2, running npx vue-tsc --build, we no errors

What is actually happening?

With vue-tsc@3, running npx vue-tsc --build, we have such results

src/App.vue:6:27 - error TS2339: Property 'foo' does not exist on type 'unknown'. 6 <LocalScope #default="{ foo, bar }" :foo="42" bar="baz"> ~~~ src/App.vue:6:32 - error TS2339: Property 'bar' does not exist on type 'unknown'. 6 <LocalScope #default="{ foo, bar }" :foo="42" bar="baz"> ~~~ Found 2 errors.

Link to minimal reproduction

https://github.com/unrevised6419/issue-vue-tsc-3

Any additional comments?

This happens with Vue extension v3 also. Downgrading to v2, works fine.

vuejs/rfcs#505 (comment)

2025-08-07.19-16-47.mov

Metadata

Metadata

Assignees

No one assigned

    Labels

    good reproduction ✨This issue provides a good reproduction, we will be able to investigate it first🔩 p2-edge-case

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions