Flowtype" Flow不涵盖"在对象属性链上

时间:2016-06-30 21:57:58

标签: flowtype

我试图使用Flow,但我一直在使用"未涵盖Flow"警告,所以我的代码主要是下划线。我检查了Flow文档,但它对于对象属性链接没有帮助,所以你如何得到这样的东西?

image

2 个答案:

答案 0 :(得分:3)

您似乎正在使用没有类型定义的库。

通过属性查找在文件中定义对象,Flow具有100%的代码覆盖率,完全没有任何类型:

const foo = { bar: { baz: 2 } };
foo.bar.baz;
// 100% Flow coverage

对于单独的文件也是如此:

<强> 1.js

// @flow
export default { bar: { baz: 2 } };

<强> 2.js

// @flow
import foo from './1.js'
foo.bar.baz;
// 100% code coverage

但是,只要从某个文件中导入某些内容,Flow就不会运行(因为它关闭了流程,或者因为它的第三方库不使用flow),Flow无法覆盖它

<强> 1.js

// @noflow
export default { bar: { baz: 2 } };

<强> 2.js

// @flow
import foo from './1.js'
foo.bar.baz;
// 0% code coverage

为了解决这个问题,您需要提供有关类型的Flow信息。

你可以做几件不同的事情

希望这有助于为您提供至少一个起点

答案 1 :(得分:0)

我也是Flow的新手,但是接下来是我的看法:

如果你有两个类,A和B,并且A上没有启用流量类型检查,那么调用它的B函数将被“揭开”。

// a.js
class A {
}

// b.js
/* @flow */
import A from './A'

class B {
  buildA():void {
    new A()        // I'm un-covered by Flow!
  }
}

Flow对A的结构一无所知,因此无法提供任何保证。