【发布时间】:2016-11-03 04:30:15
【问题描述】:
我正在尝试使用 Flow,但我不断收到“未被 Flow 覆盖”的警告,因此我的代码大部分都带有下划线。我查看了 Flow 文档,但它对对象属性链接没有帮助,所以你如何让这样的东西工作?
【问题讨论】:
标签: flowtype
我正在尝试使用 Flow,但我不断收到“未被 Flow 覆盖”的警告,因此我的代码大部分都带有下划线。我查看了 Flow 文档,但它对对象属性链接没有帮助,所以你如何让这样的东西工作?
【问题讨论】:
标签: flowtype
我也是 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 的结构一无所知,因此无法提供任何保证。
【讨论】:
您使用的库似乎没有类型定义。
通过在文件中定义对象的属性查找,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),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 被 Flow 覆盖。a.js.flow file that declare's the types
flow-typed/a.js file that adds declarations.
希望这足以为您提供至少一个起点
【讨论】: