【问题标题】:Flow error: Cannot get ` ` because property `` is missing in `String` [1].Flow(InferError)流程错误:无法获取``,因为`String` [1].Flow(InferError)中缺少属性`
【发布时间】:2019-09-18 22:46:26
【问题描述】:

我正在使用平面列表,其中流程抱怨 renderItem 属性中缺少项目对象成员的类型:

<FlatList
  data={data}
  ItemSeparatorComponent={() => <View style={styles.listSeperator} />}        
  renderItem={({ item }) => (
    <WaterConsumptionListItem
      timeStamp={item.timeStamp}
      amount={item.amount}
      datatype={item.dataType}
    />
  )}
/>

但是我不知道如何对 item 的成员进行类型检查。我得到的完整错误是:

Cannot get `item.timeStamp` because property `timeStamp` is missing in  `String` [1].Flow(InferError)
Cannot get `item.amount` because property `amount` is missing in  `String` [1].Flow(InferError)
Cannot get `item.dataType` because property `dataType` is missing in  `String` [1].Flow(InferError)

【问题讨论】:

  • 我不知道流程,但看起来它是在推断该项目具有字符串类型。你能在匿名函数中明确地给项目一个类型吗?
  • 这完全是我不知道的:)
  • 你可以为这样的数据添加一个类型吗:&lt;FlatList data={(data: Array&lt;{ timeStamp: number, amount: number, dataType: string }&gt;)}
  • FlatListitemdata的类型是什么?这里没有足够的信息。

标签: javascript react-native flowtype


【解决方案1】:

感谢 Alex,解决方案是在 Flatlist 的 data 属性中添加类型,如下所示:

 <FlatList data={(data: Array<{ timeStamp: number, amount: number, dataType: string }>)}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-18
    • 2019-07-05
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 2021-05-28
    相关资源
    最近更新 更多