chenjustcam
V2EX  ›  问与答

Typescript 该如何实现 react-router 的路由跳转的代码提示

  •  
  •   chenjustcam · Jan 11, 2023 · 1655 views
    This topic created in 1228 days ago, the information mentioned may be changed or developed.

    比如我现在有一些路由:

      type RoutesType = '/home' | '/login' | '/user/:id';
    

    我想封装 useNavigate 来实现跳转时能进行代码提示,同时对于 '/user/:id' 能实现 id 动态可变。要怎么做类型体操才能实现这个需求,或者是有别的方案能实现路由的代码提示吗?

    4 replies    2023-01-11 15:29:39 +08:00
    chenjustcam
        2
    chenjustcam  
    OP
       Jan 11, 2023
    @hua123s 我之前写出来大概是这样:
    ```typescript
    type GetRoutes<T> = T extends `${infer Path}/:${infer Param}` ? `${Path}/${string}` : T;
    type RoutesType = GetRoutes<'/home' | '/login' | '/user/:id'>
    ```
    但是在实际的代码提示里就只显示 '/home' 和 '/login' 了,使用 '/user/123' 倒是能通过类型检测,但是没有代码提示...
    btw: 头像是燕姿耶
    hua123s
        3
    hua123s  
       Jan 11, 2023   ❤️ 1
    如果要提示建议这样吧。
    type RoutesType = '/home' | '/login' | `/user/${number | 1}`;
    type RoutesType = '/home' | '/login' | `/user/${number | ':id'}`;
    chenjustcam
        4
    chenjustcam  
    OP
       Jan 11, 2023
    @hua123s 好的,谢谢你!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2198 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 466ea39e · 45ms · UTC 00:36 · PVG 08:36 · LAX 17:36 · JFK 20:36
    ♥ Do have faith in what you're doing.