如何将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
相关产品推荐
相关产品推荐

