对象属性链上的Flowtype“流量未涵盖”

我正在尝试使用Flow,但我一直得到“未被Flow覆盖”的警告,所以我的代码大部分都是加下划线的。 我检查了Flow文档,但是关于对象属性链接没有帮助,那么你如何得到这样的工作?

图片


看起来你正在使用一个没有类型定义的库。

通过在文件中定义对象的属性查找,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就无法覆盖它。

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
  • 添加一个declare类型的a.js.flow文件
  • 如果它是第三方库,请添加一个添加声明的flow-typed/a.js文件。
  • 但一定要检查流式输入以查看定义文件是否已存在。 (并回馈!)
  • 希望这有助于给你至少一个起点


    我对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的结构,所以不能提供任何保证。

    链接地址: http://www.djcxy.com/p/34957.html

    上一篇: Flowtype "Not covered by Flow" on object property chains

    下一篇: RecyclerView updates only on scroll