打字稿变换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; 
} 
+0

修复您的代码,你应该改变_.map(iconRegistry与_.map(iconRegistry [关键] – mathewmeconry

+0

遗憾的是它不工作。 – Devid