-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Allow a user to configure RouteParams and RouteParamsRaw through TypesConfig #2009
Comments
Duplicate of #1160 |
You should give https://github.com/posva/unplugin-vue-router a try, it automatically generates the types of the params for you 🪄 |
Yes, we are aware of this plugin - thank you though. Migrating an application to file base routing could (and would be for us) a large change. The proposed change would be simple to implement and greatly simplify the change needed for anyone who does not need repeatable params or want/be able to use |
I think this issue should be be reopened for people migrating large repo. I have hundred of typescript errors For now, to get around this issue, here is what I did since we don't use declare module 'vue-router' {
interface TypesConfig {
$route: RouteLocationNormalizedLoaded & {
params: Record<string, string>
};
}
} |
@vidal7 your issue will never change because params can be The safer TS alternative is doing That being said, the original thing was eventually adressed, you can now declare your own route map manually. I'm also confident that an LLM like chat gpt can generate a valid one given the |
Thank you @posva for your quick feedback. For now, I am not using repeatable params because we are migrating a big repo from Vue 2.7/Vue Router 3 to Vue 3/Vue Router 4. I am aware that it might backfire in the future but I am fine with it for now. Also, I am not willing to spread We might sometime declare our own route map with Typed Routes but for now my main goal is to migrate and get rid of hundreds of typescript errors. |
What problem is this solving
RouteParams
andRouteParamsRaw
both support the types beingstring | string[]
in order to accommodate repeatable params.This causes an annoyance in applications where repeatable params are never used and never will be used, resulting in the codebase being littered with
as string
or.toString()
.Having just completed a Vue 3 upgrade of a large application, we now have hundreds of Typescript warnings due to this added feature.
We started to go through the process of declaring a
TypesConfig
type which can be used to override$route
,$router
, etc, but there is a lot to configure here to change all of theparams
to only be astring
notstring[]
. This also will not cover usages ofuseRoute
anduseRouter
as we migrate our application from the options API to the composition API as these are not part ofTypesConfig
.Proposed solution
In order to not be a breaking change, support can be added to
TypesConfig
to make this an opt-in change for the user.Currently,
RouteParams
andRouteParamsRaw
are defined as:The proposed changed would make these conditional types from
TypesConfig
:The user is then able to configure this in their code with:
Describe alternatives you've considered
No response
The text was updated successfully, but these errors were encountered: