由Flow覆盖在已定义类型的数组上混淆

时间:2018-03-29 18:48:57

标签: javascript types flowtype

我有一个我明确定义的名为~/invocations 的类型:

Product

以下是使用此类型的组件的代码:

// types.js

export type Product = {
  id: number,
  name: string
}

奇怪的是,在运行import type { Product } from './types' type Props = { products: Product[] } const MyComponent = ({ products }: Props) => ( <ul> {products.map( (product: Product) => <li key={product.id}>{product.name}</li> )} </ul> ) 时,yarn flow coverage path/to/this/component --color告诉我该文件未被100%覆盖,在flowid中突出显示product.id name作为罪魁祸首。

如果我改为定义内联product.name的类型:

product

然后100%覆盖该文件。为什么会这样?我的假设是,使用products.map( (product: { id: number, name: string }) => ...) 类型,我应该在这里介绍。

编辑:当我从Product中删除类型时,可能值得注意:

product

覆盖范围明显较少,但这次不仅仅突出显示products.map( product => ... ) idname cli突出显示flowproduct.id

编辑2:用户错误。我从未将product.name添加到// @flow文件中!

哎呀:)

1 个答案:

答案 0 :(得分:0)

我的// @flow文件顶部只有types.js评论。这解决了这个问题。