Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

feat(types): enhanced defineComponent inference #12935

Open
wants to merge 119 commits into
base: minor
Choose a base branch
from

Conversation

johnsoncodehk
Copy link
Member

@johnsoncodehk johnsoncodehk commented Feb 24, 2025

This PR is all about improving the implementations of defineComponent type inference. It's not a complete rewrite because we can't aggressively rewrite or remove existing types/interfaces to maintain backward compatibility (if we have plans for Vue 4 we can revisit that.)

Improvements / Changes

  • TS completion in component options is 40% faster
  • The "this" type in data and props options is more accurate
  • Streamlined .d.ts output on tsc emit: props types are now printed as is to .d.ts, same types are no longer serialized to multiple parameters in DefineComponent (reduce about 35% code in naive-ui .d.ts)
  • Tsc performance improved by about 8% in elk repo
  • Prop options (type, required, default, validator) can now navigate to TS definitions
  • emits: {} is now correctly handled as an empty event set
  • Simplified mixins, extends options inference (no longer using ComponentOptionsMixin intermediate type)
  • Simplify h function overloads (remove dependency on helper types such as DefineComponent, ConcreteComponent, etc.)

@johnsoncodehk
Copy link
Member Author

/ecosystem-ci run

@vue-bot
Copy link
Contributor

vue-bot commented Feb 25, 2025

📝 Ran ecosystem CI: Open

suite result latest scheduled
language-tools failure success
nuxt success success
pinia success success
primevue success success
quasar success success
radix-vue success success
router success success
test-utils failure success
vant success success
vite-plugin-vue success success
vitepress success success
vue-i18n failure success
vue-macros failure failure
vuetify failure success
vueuse success success
vue-simple-compiler success success

@johnsoncodehk
Copy link
Member Author

/ecosystem-ci run

@vue-bot
Copy link
Contributor

vue-bot commented Feb 26, 2025

📝 Ran ecosystem CI: Open

suite result latest scheduled
language-tools failure success
nuxt success success
pinia success success
primevue success success
quasar success success
radix-vue success success
router success success
test-utils failure success
vant success success
vite-plugin-vue success success
vitepress success success
vue-i18n failure success
vue-macros failure failure
vuetify failure success
vueuse success success
vue-simple-compiler success success

@johnsoncodehk
Copy link
Member Author

/ecosystem-ci run

@vue-bot
Copy link
Contributor

vue-bot commented Feb 26, 2025

📝 Ran ecosystem CI: Open

suite result latest scheduled
language-tools failure success
nuxt success success
pinia success success
primevue success success
quasar success success
radix-vue success success
router success success
test-utils failure success
vant success success
vite-plugin-vue success success
vitepress success success
vue-i18n failure success
vue-macros failure failure
vuetify failure success
vueuse success success
vue-simple-compiler success success

@johnsoncodehk
Copy link
Member Author

/ecosystem-ci run

@vue-bot
Copy link
Contributor

vue-bot commented Feb 26, 2025

📝 Ran ecosystem CI: Open

suite result latest scheduled
language-tools failure success
nuxt failure success
pinia success success
primevue success success
quasar success success
radix-vue success success
router success success
test-utils failure success
vant success success
vite-plugin-vue success success
vitepress success success
vue-i18n failure success
vue-macros failure failure
vuetify failure success
vueuse success success
vue-simple-compiler success success

@johnsoncodehk
Copy link
Member Author

/ecosystem-ci run

@vue-bot
Copy link
Contributor

vue-bot commented Feb 26, 2025

📝 Ran ecosystem CI: Open

suite result latest scheduled
language-tools failure success
nuxt success success
pinia failure success
primevue success success
quasar success success
radix-vue success success
router success success
test-utils failure success
vant success success
vite-plugin-vue failure success
vitepress success success
vue-i18n failure success
vue-macros failure failure
vuetify failure success
vueuse success success
vue-simple-compiler success success

@johnsoncodehk
Copy link
Member Author

/ecosystem-ci run

@vue-bot
Copy link
Contributor

vue-bot commented Feb 26, 2025

📝 Ran ecosystem CI: Open

suite result latest scheduled
language-tools failure success
nuxt failure success
pinia success success
primevue success success
quasar success success
radix-vue success success
router success success
test-utils success success
vant success success
vite-plugin-vue success success
vitepress success success
vue-i18n failure success
vue-macros failure failure
vuetify failure success
vueuse success success
vue-simple-compiler success success

# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants