![](/img/trans.png)
[英]How to check type of a JSON object against typescript interface in React
[英]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.