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

如何在TypeScript中用动态变量创建字符串字面量联合类型?

实现方法

要把路径数组转换为带动态段占位符的字符串字面量联合类型,按以下步骤操作即可:

1. 保留数组元素的字面量类型

给路径数组添加as const断言,让TypeScript保留每个元素的具体字符串字面量类型,避免被推断为宽泛的string类型:

const paths = ['create/{id}', 'delete/{ticketId}', 'get-all'] as const;

2. 定义类型工具替换动态段

创建一个模板字符串类型工具,递归匹配并替换路径中{xxx}格式的动态变量为${string}:

type ReplaceDynamicSegments<T extends string> = 
  T extends `${infer Prefix}/{${infer _}}${infer Suffix}`
    ? `${Prefix}/${string}${ReplaceDynamicSegments<Suffix>}`
    : T;

这个类型支持处理多段动态变量的场景,比如"a/{b}/c/{d}"会被转换为"a/${string}/c/${string}"。

3. 生成目标联合类型

通过typeof paths[number]获取数组元素的字面量联合类型,传入上述类型工具后得到最终结果:

type BackEndPaths = ReplaceDynamicSegments<typeof paths[number]>;
// 最终类型:"create/${string}" | "delete/${string}" | "get-all"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:09:57