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

Improve type restriction of parametrized routes #28

Closed

Conversation

tllobregat
Copy link

Hello Aurélien,

J'étais sur un petit projet perso et je cherchais un moyen d'améliorer le typage des paramètres des routes lors de la navigation.

Avant, on faisait quelque chose du genre :

  onClick={() => navigate(Routes.MY_ROUTE.replace(':id', myRouteId))}

Le problème c'est que id n'était pas forcement un paramètre de la route en question.

Avec mes quelques modifications, on pourrait faire :

  onClick={() => navigate(Routes.MY_ROUTE.getParametrizedPath({ id: myRouteId }))}

Et avoir une erreur TS si :

  • Le paramètre "id" n'est pas attendu
  • Un paramètre est manquant
  • Un paramètre n'est pas du bon type

Qu'en penses-tu ?

Aussi, grâce aux types "Params", cela nous permettrait de typer les useParams de react-router :

  const { param }: ParametrizedExampleParams = useParams() as ParametrizedExampleParams;

J'ai pour l'instant laisser les examples dans la PR mais on pourra les enlever bien sûr :)

@amanteaux
Copy link
Member

Hello Thomas,

Je me demande si ton code ne vient pas d'une limitation de react router.
Je ne serai pas contre changer de lib et par exemple passer sur ça : https://github.com/zilch/type-route

A discuter

@amanteaux amanteaux added enhancement New feature or request question Further information is requested labels Sep 3, 2024
@amanteaux
Copy link
Member

I created issue #46 to follow this.

@amanteaux amanteaux closed this Sep 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request question Further information is requested
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants