react-native 中的 flow 和 eslint 有什么区别?我应该使用哪一种?我可以同时使用吗?

Tar*_*run 10 flowtype react-native

我被要求在 react-native 的项目中使用静态分析器。因为我已经在使用 Eslint ,它更漂亮,这也有助于识别编译时错误,然后我在 react-native 中找到了用于静态分析的流程。

它让我感到困惑,因为 eslint 做了类似的工作。

我没有发现 flow 和 eslint 之间的区别。所以我的问题是

  1. eslint 和 flow 解决相同的目的吗?
  2. 如果不是,那么什么时候使用 eslint 以及什么时候使用 flow
  3. 我可以同时使用 flow 和 eslint 吗?

dot*_*nor 5

Flow是 javascript 的类型检查器,它根据您在运行代码之前事先提供的信息,确保您向函数或类传递正确类型的信息。

ESLint是一个linter

Lint 或 linter 是一种分析源代码以标记编程错误、错误、风格错误和可疑结构的工具。

https://en.wikipedia.org/wiki/Lint_(软件)

因此,ESLint有一长串预定义规则,您可以根据自己的喜好进行调整,以便在运行之前捕获错误,无论是语法、代码风格还是不良做法。

所以总结每个程序都试图解决两个不同的问题,因此可以单独使用,一起使用,或者两者都不使用。


tul*_*dev 5

  1. eslint 和 flow 解决相同的目的吗?

是的。我认为他们有相同的最终目的(这并不意味着他们解决了同样的问题)。通过警告丑陋/错误语法代码,帮助程序员在打字/编码阶段意识到可能导致错误的错误/风险代码。因此它将减少运行时错误。

  1. 如果不是,那么什么时候使用 eslint 以及什么时候使用 flow
  • ESLint 是一个 linter https://eslint.org/docs/about/

    代码 linting 是一种静态分析,常用于查找有问题的模式或不符合某些样式指南的代码。大多数编程语言都有代码 linter,编译器有时会将 linting 合并到编译过程中。

ESLint 检查规则更像是约定规则。

  • Flow 是一个静态类型检查器 https://flow.org/en/docs/getting-started/

    Flow 是 JavaScript 代码的静态类型检查器。它做了很多工作来提高你的工作效率。让您的编码更快、更智能、更自信、规模更大。

    Flow 通过静态类型注释检查您的代码是否有错误。这些类型允许你告诉 Flow 你希望你的代码如何工作,Flow 将确保它以这种方式工作。

它与 ESLint 有点相同,但更专注于类型注释。

  • 如果你想在约定级别减少 JS 中的错别字/风险/丑陋的代码 -> ESLint 是必需的。
  • 如果你想在 JS 代码中添加粘性类型,其他程序员不会以错误的方式使用你的代码 -> Flow
  1. 我可以同时使用 flow 和 eslint 吗?

是的。我正在使用 @babel/preset-flow 和 eslint-config-airbnb。

P/s:在我看来,ESLint 是必备的。Flow/TypeScript 可以考虑