流程:如何键入具有可变数量键的对象?

时间:2018-01-22 09:00:25

标签: javascript reactjs flowtype

我用这个动态构建一个对象:

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键入返回的对象?

3 个答案:

答案 0 :(得分:2)

看起来你需要那样的事情

const data: { [index: number]: {field1: string, field2: string} }

https://flow.org/en/docs/types/objects/#toc-objects-as-maps

答案 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具有的确切密钥数。