javascript - 在 JavaScript 中将一个枚举转换为另一个枚举

标签 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?
}

最佳答案

TypeScript 枚举允许您执行 reverse mapping :

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'

关于javascript - 在 JavaScript 中将一个枚举转换为另一个枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55214527/

相关文章:

javascript - 如何在 HTML 中使 vim 缩进 JavaScript?

javascript - 请给我一些javascript练习

javascript - 点击flex card时,打开一个新页面并在javascript/jquery中显示带有样式的解析数据

javascript - 使用字符串变量作为对象字段

javascript - 使用 ng new 命令创建 JavaScript 文件而不是 TypeScript

typescript - typescript 中可选的必需参数

node.js - 为 Node/Express/Typescript 和 Angular 设置一个项目

typescript - 棱镜 : select on many to many with multiple conditions

javascript - 有没有办法在 ngif (AngularJS) 中检查 localStorage 变量

javascript - Web 共享 API 在 iOS : Angular 上不起作用