我有两个枚举 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}
]
答案 0 :(得分:0)
我做了这个:
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' }
]
答案 1 :(得分:0)
如果我正确理解了问题,您想更改界面以描述常量 dropDownOptions
...您可以这样做
interface IOption {
myKey: Key;
myLabel: Label;
}
// what is the best way to achieve an array of IOption like this
const dropDownOptions: IOption[] = [
{ myKey: Key.Flag, myLabel: Label.Flag },
{ myKey: Key.Star, myLabel: Label.Flag },
{ myKey: Key.Checkbox, myLabel: Label.Checkbox }
]