-
-
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
Add support for params generic in useRoute #1160
Comments
This is interesting. I think we can push it a bit further the type génération for routes and the PR that @pikax sent #872 , maybe there is a way to extend the defined routes and then provide (with autocompletion) a name generic: // given a route { path: '/users/:id', name: 'users' ... }
useRoute<'users'>() // route type with params: { id: string }
// given a route { path: '/posts/:slugs*', name: 'posts' ... }
useRoute<'posts'>() // route type with params: { slugs?: string[] } |
@posva If we have plans for a useRoute hook, may be we can add a useParams hook with generic support? Because at the moment the problem with typing params is very annoying 😞 What does the proposed API look like?type Params = {
id: string
type: ResourceType
}
const params = useParams<Params>() // params with types information |
as mentioned in #1159 (comment) let's keep this in userland for the moment import { RouteParams } from 'vue-router'
import { computed } from 'vue'
function useParams<P extends RouteParams>() {
const route = useRoute()
return computed(
() => route.params as P
)
} |
The current direction is leaning more towards something as automatic as possible with https://github.com/posva/unplugin-vue-router |
Can't param types be correctly generated based on |
@amalitsky the reason is performance: https://www.youtube.com/watch?v=2hYU6HyTNdk |
What problem does this feature solve?
Typing of params from useRoute.
When you have function with typed arguments
And when you try to pass a
route.params
as an argumentYou will get error
Argument of type 'string | string[]' is not assignable to parameter of type 'string'.
Type 'string[]' is not assignable to type 'string'.
Screenshot of problem
What does the proposed API look like?
Pull Request
#1159
The text was updated successfully, but these errors were encountered: