我用这个动态构建一个对象:
getObject = () => {
const data = [
{field1: 'val1', field2: 'val2'},
{field1: 'val3', field2: 'val4'}
]
const res = {}
for (let i=0; i<data.length; i++) {
res[i] = data[i]
}
return res
}
我的实际问题更复杂,但这个简单的案例显示了我的问题。
所以我得到一个看起来像这样的对象:
{
0 : {field1: 'val1', field2: 'val2'},
1: {field1: 'val3', field2: 'val4'}
}
我知道它的键是数字而我键的值是
{ field1: string, field2: string }
,但我不知道密钥的数量,因为它取决于数组的长度。
如何使用Flow键入返回的对象?
答案 0 :(得分:2)
看起来你需要那样的事情
const data: { [index: number]: {field1: string, field2: string} }
答案 1 :(得分:1)
您可以在流程中使用对象作为地图
// @flow
var o: { [number]: {field1: string, field2: string} } = {};
o[1] = {field1: 'hello', field2: 'world'};
o[2] = {field1: 'hello', field2: 'world'};
答案 2 :(得分:0)
要获取对象的密钥,您可以执行Object.keys(obj)
。
这将为您提供obj
具有的确切密钥数。