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

TypeScript中能否通过编程将字符串数字字面量类型转换为对应数字类型?

TypeScript 字符串字面量联合转数字字面量联合实现方案

该操作完全可以实现,仅需使用 TypeScript 4.1 及以上版本提供的模板字面量类型+条件类型特性即可完成。

具体实现步骤

1. 定义通用转换类型工具

// 泛型约束传入的内容必须是字符串类型
type StringToNum<T extends string> = T extends `${infer Num extends number}` ? Num : never;

2. 调用工具完成转换

// 你的原始字符串联合类型
type OriginUnion = "1" | "2" | "3";
// 转换后的数字联合类型,结果为 1 | 2 | 3
type TargetUnion = StringToNum<OriginUnion>;

实现原理解释

  • 条件类型默认支持联合类型分发:当传入的泛型参数是联合类型时,判断逻辑会逐一对每个成员执行,最后把所有成员的执行结果合并为新的联合类型
  • 模板字面量的infer Num extends number语法可以直接将符合数字格式的字符串字面量,自动推断为对应的数字字面量类型,不符合数字格式的字符串会返回never,自动被过滤出最终的联合结果

注意:如果原始联合类型中包含非数字格式的字符串成员(例如"a"、"12b"等),转换后这些成员会被过滤,不会出现在最终的数字联合类型中。如果需要保留或对非法格式做提示,可以自行调整工具类型的分支逻辑。

内容的提问来源于stack exchange,提问作者Michiel de Vos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:09:01