我正在使用嵌套对象,并尝试使用Object.keys()和forEach()获取属性。问题是当我想获取嵌套键filteringState[item][el]时。
如何键入这样的函数?
interface InitialStateTypes {
country: {
"italy": boolean,
},
board: {
"full": boolean,
},
transport: {
"bus": boolean,
"own": boolean
},
}
interface FilteringDataTypes {
country: string[],
board: string[],
transport: string[],
}
const collectFilteringData = (filteringState: InitialStateTypes) => {
let filteringData = <FilteringDataTypes>{};
Object.keys(filteringState).forEach((item) => {
Object.keys(filteringState[item]).forEach((el) => {
if (filteringState[item][el]) {
if (!filteringData[item]) {
filteringData[item] = [el];
} else {
filteringData[item] = [...filteringData[item], el];
}
}
});
});
return filteringData;
};
export default collectFilteringData;
2条答案
按热度按时间pvabu6sv1#
当使用
keys
方法时,可能会有点混乱,因为它只期望输出字符串。(这不是不合理的,因为JS对象键被认为是字符串,当然TypeScript更担心这一点)下面是一种可能的方法:
forEach
方法forEach
传入typeof item
的值格式化(使用Prettier)后,它最终看起来如下所示:
注意
我已经在TypeScript 4.6.2中写出了这个答案,
keys
方法的类型如下:tkclm6bt2#
您可以使用
keyof
运算子。示例:
以下是更多详细信息:https://www.typescriptlang.org/docs/handbook/2/keyof-types.html
巢状数据: