You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写TypeScript泛型BeforeSign以匹配指定路由格式?

实现BeforeSign泛型类型,满足路由校验需求

以下是符合需求的BeforeSign泛型实现及完整验证代码:

type Routes = 'first' | 'second';

type BeforeSign<T extends string, S extends string> = T | `${T}${S}${string}`;

const handleRoute = (route: BeforeSign<Routes, '#'>) => route;

// 合法调用,无类型错误
handleRoute('first');
handleRoute('first#additional');
handleRoute('first#random');
handleRoute('second#example');

// @ts-expect-error 非法路由前缀,触发类型错误
handleRoute('third');
// @ts-expect-error 非法路由前缀,触发类型错误
handleRoute('third#nope');

实现说明

  • BeforeSign泛型接收两个字符串类型参数:
    • T:基础路由的联合类型(如示例中的'first' | 'second'),限定为字符串类型
    • S:分隔符(如示例中的'#'),同样限定为字符串类型
  • 生成的类型是两种合法场景的联合:
    1. 直接使用T中的任意基础路由值(如'first'、'second')
    2. 以T中路由值开头,后跟分隔符S,再拼接任意字符串的模板字符串(如'first#xxx'、'second#yyy')
  • 该实现会自动拦截非法路由输入:无论是完全不存在的路由前缀(如'third'),还是非法前缀加分隔符的形式(如'third#nope'),都会触发TypeScript类型错误。

内容的提问来源于stack exchange,提问作者Everettss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:15:26