【问题标题】:Flowtype "Not covered by Flow" on object property chains对象属性链上的流类型“流未涵盖”
【发布时间】:2016-11-03 04:30:15
【问题描述】:

我正在尝试使用 Flow,但我不断收到“未被 Flow 覆盖”的警告,因此我的代码大部分都带有下划线。我查看了 Flow 文档,但它对对象属性链接没有帮助,所以你如何让这样的东西工作?

【问题讨论】:

    标签: flowtype


    【解决方案1】:

    我也是 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 的结构一无所知,因此无法提供任何保证。

    【讨论】:

      【解决方案2】:

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

      通过在文件中定义对象的属性查找,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 信息。

      你可以做一些不同的事情

      希望这足以为您提供至少一个起点

      【讨论】:

        猜你喜欢
        • 2017-09-14
        • 1970-01-01
        • 2023-03-14
        • 2018-06-28
        • 2019-12-26
        • 2017-01-25
        • 2017-06-29
        • 1970-01-01
        • 2023-04-07
        相关资源
        最近更新 更多