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

TypeScript实现Path类型约束:禁止特定特殊字符

解决方案

要实现仅允许字母/数字、严格符合指定格式的Path类型,我们可以通过自定义合法段类型替换原类型中的string,限制变量部分不能包含:和/,同时利用TypeScript模板字符串类型的严格匹配特性确保路径格式正确。

完整代码实现

// 定义仅允许字母/数字的路径段类型,禁止包含':'和'/'
type ValidSegment = 
  string extends `${infer Char}${infer Rest}`
    ? Char extends ':' | '/'
      ? never
      : Rest extends ''
        ? Char
        : `${Char}${ValidSegment}`
    : '';

// 严格匹配指定格式的Path类型
type Path = 
  `\\path\\${ValidSegment}\\page\\random` | 
  `\\path\\page\\${ValidSegment}`;

// 合法路径(通过类型检查)
const path1: Path = '\\path\\hello\\page\\random';
const path2: Path = '\\path\\page\\somethingelse';

// 非法路径(触发类型报错)
const path3: Path = '\\path\\:id\\page\\random'; // 包含':'参数标识
const path4: Path = '\\path\\page\\:param'; // 包含':'参数标识
const path5: Path = '\\path\\page\\somethingelse\\and'; // 格式错误(多了额外路径段)

说明

  1. ValidSegment类型:通过递归模板字符串推断,检查每个字符是否为:或/,如果是则返回never(不允许),否则继续验证剩余字符,最终只保留由字母/数字组成的字符串。
  2. Path类型:用ValidSegment替代原类型中的string,确保变量部分符合要求;同时模板字符串的固定结构会自动拦截格式错误的路径(比如多余的路径段)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:30:41