在TypeScript中从字符串中获取枚举类型
在TypeScript中从字符串中获取枚举类型
我在TypeScript中有一个包含20多个字段的枚举。我有一个UI应用程序,用户可以在其中输入一些自由文本(例如,假设是用户喜欢的颜色)。我的要求是将这个颜色信息传递给中间层服务。中间层服务将颜色定义为与UI枚举定义同步的枚举。我需要将用户输入的文本转换为枚举(在前端),因为在构建过程中会出现编译问题。我找不到一种方法来执行转换(例如,将用户输入的字符串转换为特定的枚举元素)。任何指点都将有帮助。
以下是示例代码:
导出枚举Color {
绿色='绿色',
橙色='橙色',
黄色='黄色'
......
以此类推
}
用户输入的是绿色(一个字符串)。当我在中间层调用服务时,它期望一个枚举。
谢谢。
在TypeScript中,我们可以使用反向枚举映射来将枚举值转换为对应的字符串。例如,Color[1] === 'Green'
,Color['green'] === 1
。
然而,如果你的UI是在将TypeScript导出为JavaScript后运行的,那么在JavaScript的值空间中并不存在这个枚举。如果这个假设是正确的,那么最好将枚举导出为一个对象,以便以更标准的JavaScript方式进行映射。
谢谢,让我来检查一下。实际上,我更多地是一个服务器端开发人员,对这些概念并不完全熟悉。
解决方法:
1. 将枚举导出为一个对象,以便在JavaScript中进行映射。例如:
export const ColorMapping = { Green: 1, Red: 2, Blue: 3, };
2. 在需要使用枚举值的地方,通过对象的键来进行映射。例如:
const color = 'Green'; const value = ColorMapping[color];
这样就可以在JavaScript中获得枚举值对应的数值了。