TypeScript 枚举到对象数组

新手上路,请多包涵

我有一个这样定义的枚举:

export enum GoalProgressMeasurements {
    Percentage = 1,
    Numeric_Target = 2,
    Completed_Tasks = 3,
    Average_Milestone_Progress = 4,
    Not_Measured = 5
}

但是,我希望它从我们的 API 中表示为对象数组/列表,如下所示:

[{id: 1, name: 'Percentage'},
 {id: 2, name: 'Numeric Target'},
 {id: 3, name: 'Completed Tasks'},
 {id: 4, name: 'Average Milestone Progress'},
 {id: 5, name: 'Not Measured'}]

是否有简单的本地方法来执行此操作,或者我是否必须构建一个将枚举转换为 int 和字符串的函数,并将对象构建到数组中?

原文由 AnimaSola 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

如果你使用的是 ES8

只有在这种情况下,它才能完美地工作。它会给你给定 枚举 的值数组。

 enum Colors {
  WHITE = 0,
  BLACK = 1,
  BLUE = 3
}

const colorValueArray = Object.values(Colors); //[ 'WHITE', 'BLACK', 'BLUE', 0, 1, 3 ]

你会得到 colorValueArray 就像这样 [ 'WHITE', 'BLACK', 'BLUE', 0, 1, 3 ] 。所有的键都在数组的前半部分,所有的值都在后半部分。

即使是这种枚举也能正常工作

enum Operation {
    READ,
    WRITE,
    EXECUTE
}

但是这个解决方案不适用于像这样的 异构枚举

enum BooleanLikeHeterogeneousEnum {
  No = 0,
  Yes = "YES",
}

原文由 Jai Prak 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题