在JavaScript中将一个Enum转换为另一个

时间:2019-03-18 03:48:05

标签: javascript typescript

编辑

正如评论所暗示的那样,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?
}

2 个答案:

答案 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