首页 > 解决方案 > 在打字稿中,我们可以将两个枚举转换为一个对象键值吗

问题描述

我有两个枚举 Key & Label 和一个接口 IOption 并使用枚举我想创建一个数组的 Iptions 对象

const enum Key {
    Flag = 'flag',
    Checkbox = 'checkbox',
    Star = 'star'
}

const enum Label {
    Flag = 'Flag',
    Checkbox = 'Checbox',
    Star = 'Start'
}

interface IOption {
  key: Key;
  label: Label;
}

const dropDowOptions: Ioptions[] 

实现这样的 IOption 数组的最佳方法是什么

const dropDownOptions = [
                         {myKey: Key.Flag,  myLabel: Label.Flag },
                         {myKey: Key.Star, myLabel: Label.Flag},
                         {myKey: Key.CheckBox, myLael: Label.Checkbox}  
                         ]

标签: javascriptnode.jsangulartypescript

解决方案


我做的:

enum Key {
    Flag = 'flag',
    Checkbox = 'checkbox',
    Star = 'star'
}

enum Label {
    Flag = 'Flag',
    Checkbox = 'Checbox',
    Star = 'Start'
}

interface IOption {
  key: Key;
  label: Label;
}

var dropDownOptions: IOption[] = new Array<IOption>();

Object.keys(Key).forEach(key => {
    dropDownOptions.push({
        key: Key[key],
        label: Label[key]
    });
});
console.log(dropDownOptions);

输出:

[
  { key: 'flag', label: 'Flag' },
  { key: 'checkbox', label: 'Checbox' },        
  { key: 'star', label: 'Start' }
]

推荐阅读