簡體   English   中英

Typescript將json const轉換為接口類型

[英]Typescript Transform json const to interface type

我想轉換以下const json:

export const iconRegistry = {
  home: {
    ciclogoc: 'cic-c',
    ciclogoi: 'cic-i',
    ciclogont: 'cic-nt'
  },
};

此接口類型:

export interface IconDescription {
key: string;
value: string;
icon?: string;
}

因此,home應該是鍵,值應該是ciclogoc,圖標應該是cic-c。

這是我現在所擁有的,但無法正常工作:

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;
}

您通過iconRegistry循環了兩次:

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;
}

因此,經過一些幫助,我終於正確了。 我遍歷所有圖標,然后再次遍歷所有值並將其推送到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;
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM