我试图使用Flow,但我一直在使用"未涵盖Flow"警告,所以我的代码主要是下划线。我检查了Flow文档,但它对于对象属性链接没有帮助,所以你如何得到这样的东西?
答案 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信息。
你可以做几件不同的事情
a.js
覆盖。a.js.flow
file that declare
's the types flow-typed/a.js
file that adds declarations. 希望这有助于为您提供至少一个起点
答案 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的结构一无所知,因此无法提供任何保证。