【问题标题】:Flow: How to type an object with variable number of keys?流程:如何键入具有可变数量键的对象?
【发布时间】:2018-01-22 17:07:51
【问题描述】:

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

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

【问题讨论】:

    标签: javascript reactjs flowtype


    【解决方案1】:

    看来你需要那样的东西

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

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

    【讨论】:

      【解决方案2】:

      您可以将对象用作流中的地图

      // @flow
      var o: { [number]: {field1: string, field2: string} } = {};
      o[1] = {field1: 'hello', field2: 'world'};
      o[2] = {field1: 'hello', field2: 'world'};
      

      【讨论】:

        【解决方案3】:

        要获取对象的密钥,您可以使用Object.keys(obj)。

        这将为您提供obj 拥有的确切密钥数。

        【讨论】:

        • 我正在尝试创建一个流类型,一个字典
        猜你喜欢
        • 2021-07-08
        • 1970-01-01
        • 2022-10-17
        • 1970-01-01
        • 2018-01-13
        • 1970-01-01
        • 1970-01-01
        • 2014-01-14
        • 1970-01-01
        相关资源
        最近更新 更多