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

如何将TypeScript枚举值转换为字符串?

将TypeScript枚举值转换为字符串类型传递给API

嗨,这个需求太常见啦——对接API的时候经常需要把枚举的数值类型转成字符串,我给你分享几个实用的解决办法:

方法1:直接转换(简单场景首选)

因为你的枚举值是数字类型,直接用String()函数或者模板字符串就能快速转成字符串,代码示例:

enum RecordStatus { 
  CancelledClosed = 102830004, 
  Completed = 102830003, 
  InProgress = 102830002, 
  ShoppingCart = 102830005, 
  Submitted = 102830001, 
  Unordered = 102830000 
}

// 方式A:使用String()函数
const submittedStrValue = String(RecordStatus.Submitted); // 结果是"102830001"

// 方式B:模板字符串拼接
const completedStrValue = `${RecordStatus.Completed}`; // 结果是"102830003"

这种方法零额外代码,适合单个枚举值转换的场景。

方法2:封装工具函数(复用性更强)

如果需要频繁转换多个枚举值,写个工具函数能让代码更规范,还能利用TypeScript的类型检查避免出错:

// 通用枚举值转字符串函数
function enumValueToString<T>(enumObj: T, key: keyof T): string {
  return String(enumObj[key]);
}

// 使用示例
const inProgressStr = enumValueToString(RecordStatus, 'InProgress'); // "102830002"

这个函数支持任意枚举类型,传入枚举对象和对应的键就能得到字符串值,类型安全还方便复用。

方法3:改为字符串枚举(一劳永逸的方案)

如果API接口要求的参数本身就是固定的字符串值,那直接把枚举定义改成字符串枚举就不用再做转换了:

enum RecordStatus { 
  CancelledClosed = "102830004", 
  Completed = "102830003", 
  InProgress = "102830002", 
  ShoppingCart = "102830005", 
  Submitted = "102830001", 
  Unordered = "102830000" 
}

const submittedStrValue = RecordStatus.Submitted; // 直接就是字符串"102830001"

这种方式最彻底,后续使用枚举的时候直接拿到的就是符合API要求的字符串类型,完全不用额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:21:12