【问题标题】:Flow Type error: property of unknown type. This type is incompatible with array type流类型错误:未知类型的属性。此类型与数组类型不兼容
【发布时间】:2017-04-12 06:22:38
【问题描述】:

我有以下 JSX。类似的东西:

{
  event.divisions &&
  event.divisions.edges &&
  (event.divisions.edges: Array<Object>)
    .map(d => d.node)
    .map(division => (
      <div>{division}</div>
    ))
}

如果不进行转换,它会告诉我它缺少注释。通过强制转换,我收到以下错误:

 81:    (event.divisions.edges: Array<Object>)
         ^^^^^^^^^^^^^^^^^^^^^ property `edges` of unknown type. This type is incompatible with
 81:    (event.divisions.edges: Array<Object>)
                                ^^^^^^^^^^^^^ array type

这怎么可能不兼容?而且怎么可能不为人知?我明确告诉它类型。

【问题讨论】:

  • 是否要循环遍历对象 event.divisions.edges 的键
  • Flow 中的铸件是安全的。它仍然会验证您提供的类型是否正确。如果不知道event 来自哪里以及它的类型是什么,就无法解决您的问题。

标签: javascript reactjs react-jsx flowtype


【解决方案1】:

您可以按照以下方式映射对象数组

{
  event.divisions &&
  event.divisions.edges &&
  event.divisions.edges.map(d => {
      return d.node.map(division => (
      <div>{division}</div>
    ))
   }

}

【讨论】:

  • 不过,这样做会给我带来不同的流程错误。 “81:event.divisions.edges ^ 方法map 的调用。无法在81 上调用方法:event.divisions.edges ^^^^^^^^^^^^^^^^^^^^ 属性edges 类型未知”
  • 因此,如果我不添加演员表,flow 会警告我边缘未知。如果我确实添加了演员表,流程会给我一个错误,指出它不兼容。
  • 你是如何获得价值的,即 event.divisions.edges
【解决方案2】:

尝试这样做:

{
  event.divisions &&
  event.divisions.edges &&
  (event.divisions.edges: $ReadOnlyArray<Object>)
    .map(d => d.node)
    .map(division => (
      <div>{division}</div>
    ))
}

【讨论】:

  • 同样的问题... :-(
猜你喜欢
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 2013-10-30
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
相关资源
最近更新 更多