【问题标题】:Flowtype - is there any reason not to put all node_modules in [declarations]?Flowtype - 是否有任何理由不将所有 node_modules 放入 [declarations] 中?
【发布时间】:2021-06-03 20:33:48
【问题描述】:

升级 Flow 时,node_modules 中出现错误是很常见的,但这会让一堆错误消失:

[declarations]
<PROJECT_ROOT>/node_modules/.*

另外,我认为它显着减少了 Flow 必须处理的东西的数量,因为

在声明模式下,代码不进行类型检查。但是,类型检查器在检查其他代码时会提取和使用函数、类等的签名。

但这不是默认设置。有什么理由我不应该这样做吗?如果类型签名本身有错误(例如实现接口但方法类型不同的类,或者安装的流类型定义在库和使用项目之间不同),它会不会在我的使用这些类型签名的代码中报告一些错误?

我应该注意,因为 AFAIK Flow仍然 没有仅从源代码输出定义的工具*,我刚刚将整个源文件复制到 .js.flow 在我们的许多内部包。因此,在使用这些包的项目中升级 Flow 时会发生错误。但是,即使在我们当前使用的 graphql 版本中,我也看到了错误。

*当我尝试使用文档中提到的print-signature CLI 命令时,它实际上并不存在。

【问题讨论】:

    标签: flowtype


    【解决方案1】:

    使用[declarations] 绝对是有意义的,无论是前进还是保留与某些第三方软件包相关的 Flow 服务器版本,而不必完全丢弃它的类型定义。

    我一直在明确提供可理解的路径,清楚地表示 [declarations] 中导致问题的包,因为这有助于提示需要注意哪些依赖项并优先考虑升级,以便在可用时获得更好的打字体验。

    这就是我认为你在一天结束时真正失去的唯一东西,即准确知道你可能没有完整类型信息的依赖项的能力。

    【讨论】:

      猜你喜欢
      • 2011-12-02
      • 2011-06-09
      • 2011-07-30
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-03
      相关资源
      最近更新 更多