javascript - 在 JavaScript 中将一个枚举转换为另一个枚举
问题描述
编辑
正如评论所暗示的,Enum 不是 JavaScript 的一部分,而是 TypeScript 的一部分。我故意留下原始标题,因为可能会像我一样犯错。
我有两个具有相同键但值不同的枚举。
enum RowStates {
editing = 0,
sentToApproval,
approved
// ...
}
enum RowColors {
editing = '#ffffff',
sentToApproval = '#ffffcc',
approved = '#ccffb3'
// ...
}
我有一些功能可以进行转换:
function Convert (rowState) {
// What should be here to return rowColor?
// Using switch (rowState) is obvious, but may be other solution exist?
}
解决方案
TypeScript 枚举允许您进行反向映射:
enum RowStates {
editing = 0,
sentToApproval,
approved
}
enum RowColors {
editing = '#ffffff',
sentToApproval = '#ffffcc',
approved = '#ccffb3'
}
function convert(rowState: RowStates) {
return RowColors[RowStates[rowState] as keyof typeof RowColors];
}
console.log(convert(RowStates.sentToApproval)); // prints '#ffffcc'
推荐阅读
- python - 为什么我的代码没有遍历每一行?尽管剥离了关键错误“\ n”(使用.read()输入的.txt输入)
- sql-server - SQL 执行任务中的 SSIS 变量表达式设置不正确
- .net - MongoDB 获取文档字段描述(如 SQL 中的系统表)
- opencv - cv::dnn::Layer::forward 不适用于特定层(python)
- javascript - 当有多个绘图出错时悬停消息的位置
- twilio - Twilio Chat - 除非频道成员,否则无法获取公共频道“services.publicChannels 未定义”
- mysql - mysqli 多案例排序查询
- java - Gradle lint 和测试构建错误 - 库中的 JAXBException 和无效的包引用
- powershell - 当作为参数给出时,仅从字符串/数组中获取第一个值
- sql - 有条件地将值从一行复制到另一行