打字稿变换JSON常量的接口类型
问题描述:
我想下面的常量JSON转换:打字稿变换JSON常量的接口类型
export const iconRegistry = {
home: {
ciclogoc: 'cic-c',
ciclogoi: 'cic-i',
ciclogont: 'cic-nt'
},
};
这种接口类型:
export interface IconDescription {
key: string;
value: string;
icon?: string;
}
所以,家应该是关键,价值应该是ciclogoc和图标应该是cic-c。
这是我现在有,但它不能正常工作:通过您的iconRegistry
public getIcons(): IconDescription[] {
let result: IconDescription[] = [];
for (let key in iconRegistry) {
result = _.map(iconRegistry, item => {
let icons: IconDescription[] = [];
for (let value in item) {
console.log('KEY:', key, 'VALUE:', value, 'ICON:', item[value]);
icons.push({ key, value, icon: item[value] });
}
return icons;
});
}
return result;
}
答
所以一些帮助后,我得到了它连接最后的权利。我遍历所有图标,然后遍历所有值并将它们推送到IconDescription。
public getIcon(): IconDescription[] {
for (let key in iconRegistry) {
for (let value in iconRegistry[key]) {
this.icons.push({ key, value, icon: iconRegistry[key][value] });
}
}
return this.icons;
}
答
您循环两次:
public getIcons(): IconDescription[] {
let result: IconDescription[] = [];
for (let key in iconRegistry) { // loop 1
result = _.map(iconRegistry, item => { // loop 2
let icons: IconDescription[] = [];
for (let value in item) {
console.log('KEY:', key, 'VALUE:', value, 'ICON:', item[value]);
icons.push({ key, value, icon: item[value] });
}
return icons;
});
}
return result;
}
我已经重写你的代码(未测试)
public getIcons(): IconDescription[] {
let result: IconDescription[] = [];
for (let key in iconRegistry) { //loop through the iconRegistry
for (let icon in key) { // loop thourgh the icons under the key
// fill the icon object and add it to the result set
let icon: IconDescription = {};
icon.key = key;
icon.value = icon;
icon.icon = key[icon];
result.push(icon);
}
}
return result;
}
修复您的代码,你应该改变_.map(iconRegistry与_.map(iconRegistry [关键] – mathewmeconry
遗憾的是它不工作。 – Devid