-
-
Notifications
You must be signed in to change notification settings - Fork 8.3k
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
types(runtime-core): enable plugin option types #3969
types(runtime-core): enable plugin option types #3969
Conversation
c35db09
to
41ea5df
Compare
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
@tony19 Can you help resolve the conflicts? Thanks |
This enables type inference for: 1. The options arg of a plugin's install function 2. The options passed to createApp().use()
caf4ac0
to
e2dc246
Compare
This comment was marked as resolved.
This comment was marked as resolved.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should also handle the case where a plugin options are optional and it can be used in both scenarios: with the option provided and without them
This comment was marked as outdated.
This comment was marked as outdated.
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com>
You were right! but it also should be stricter 😄 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added stricter tests and refactored the options to make it work at tony19-contrib#1
refactor: stricter plugin types
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com>
Issue number: Internal --------- <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> In v3.2.46 [vue was updated](vuejs/core#3969) to add support for a generic type argument to the `Plugin` type. In #29637 Ionic's Vue plugin was updated to use the generic, but the`@ionic/vue` project is currently installing v3.2.37. This results in a local type checking error and build error: ``` (!) Plugin typescript: @rollup/plugin-typescript TS2315: Type 'Plugin_2' is not generic. src/ionic-vue.ts: (24:24) 24 export const IonicVue: Plugin<[IonicConfig?]> = { ``` ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - Bumps and pins the dev dependency of `vue` to `3.2.46`. There are other breaking changes that Vue has shipped in minor/patch cycles that prevents from updating to the latest. - Resolves the type checking error locally during build of the`@ionic/vue` package ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change: 1. Describe the impact and migration path for existing applications below. 2. Update the BREAKING.md file with the breaking change. 3. Add "BREAKING CHANGE: [...]" to the commit description when merging. See https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer for more information. --> ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. --> Validation steps: 1. Checkout the branch 2. Build `core/` 3. In `packages/vue`, install latest pinned dependencies with `npm ci` 4. Sync the changes to the `vue` package with `npm run sync` 5. Open `/packages/vue/src/ionic-vue.ts` 6. Observe: No type errors on L24 7. Run `npm run build` 8. Observe: No build errors
This enables type inference for:
options
arg of a plugin'sinstall
functioncreateApp().use()
demo