编辑
正如评论所暗示的那样,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?
}
答案 0 :(得分:1)
TypeScript枚举允许您执行reverse mapping:
enum RowStates {
editing = 0,
sentToApproval,
approved
}
enum RowColors {
editing = '#ffffff',
sentToApproval = '#ffffcc',
approved = '#ccffb3'
}
function convert(rowState) {
return RowColors[RowStates[rowState] as keyof typeof RowColors];
}
console.log(convert(RowStates.sentToApproval)); // prints '#ffffcc'
答案 1 :(得分:0)
尝试
function Convert (rowState: RowStates): RowColors {
return RowColors[RowStates[rowState]];
}
工作示例here