简体   繁体   English

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

[英]Converting one Enum to another in JavaScript

EDIT编辑

As comment suggests, Enum is not part of JavaScript but part of TypeScript.正如评论所暗示的,Enum 不是 JavaScript 的一部分,而是 TypeScript 的一部分。 I intentionally left original title as one may make mistake like me.我故意留下原标题,因为有人可能会像我一样犯错。


I have two enums with the same keys but different values.我有两个具有相同键但不同值的枚举。

enum RowStates {
    editing = 0,
    sentToApproval,
    approved
    // ...
}

enum RowColors {
    editing = '#ffffff',
    sentToApproval = '#ffffcc',
    approved = '#ccffb3'
    // ...
}

And I have some function to do convertion:我有一些功能可以进行转换:

function Convert (rowState) {
// What should be here to return rowColor?
// Using switch (rowState) is obvious, but may be other solution exist?
}

TypeScript enums allow you to do a reverse mapping : 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'

try尝试

function Convert (rowState: RowStates): RowColors {
    return RowColors[RowStates[rowState]];
}

working example here 这里的工作示例

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM