Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

feat(types): enhanced defineComponent inference #12935

Open
wants to merge 128 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
  • New DefineComponent2 type passes the structured component options type parameter as is, which 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 Mar 9, 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 failure 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 success
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 Mar 9, 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 success success
vant success success
vite-plugin-vue success success
vitepress success success
vue-i18n failure success
vue-macros failure success
vuetify failure success
vueuse success success
vue-simple-compiler success success

@johnsoncodehk johnsoncodehk force-pushed the define-component-next branch from 47bb9cd to a4f5160 Compare March 9, 2025 20:05
johnsoncodehk added a commit to vuejs/language-tools that referenced this pull request Mar 9, 2025
@johnsoncodehk
Copy link
Member Author

/ecosystem-ci run

@vue-bot
Copy link
Contributor

vue-bot commented Mar 9, 2025

📝 Ran ecosystem CI: Open

suite result latest scheduled
language-tools success success
nuxt success 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 success success
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 Mar 12, 2025

📝 Ran ecosystem CI: Open

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

@vue-bot
Copy link
Contributor

vue-bot commented Mar 12, 2025

📝 Ran ecosystem CI: Open

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

@johnsoncodehk
Copy link
Member Author

/ecosystem-ci run

@vue-bot
Copy link
Contributor

vue-bot commented Mar 12, 2025

📝 Ran ecosystem CI: Open

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

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

Successfully merging this pull request may close these issues.

4 participants