javascript - VSCode 中的流类型检查性能

标签 javascript reactjs typescript visual-studio-code flowtype

我使用 create-react-app 构建了一个新项目,并希望使用静态类型检查启动它,现在市场上有两种选择:

  • typescript
  • 流动

我有点想使用 Flow,因为它也是由 Facebook 构建的,应该(?)对 React 项目有更好的支持。

所以我正在努力的是 VSCode 中的类型检查性能。创建项目后,我运行以下命令:

  1. yarn add -D eslint-plugin-prettier husky prettier pretty-quick babel-eslint eslint-plugin-flowtype flow-bin eslint
  2. 添加了 Airbnb React 样式:eslint --init
  3. 运行 flow init
  4. 已安装 Flow Language Support
  5. 根据建议禁用 JavaScript 和 TypeScript 语言支持
  6. 在我的工作区设置中添加了以下配置:

-

{
  "flow.useNPMPackagedFlow": true,
  "flow.pathToFlow": "${workspaceRoot}/node_modules/.bin/flow"
}

我的.eslintrc如下:

{
  "extends": ["airbnb", "plugin:flowtype/recommended"],
  "plugins": ["prettier", "flowtype"],
  "parser": "babel-eslint",
  "env": {
    "browser": true,
    "es6": true,
    "jest": true,
    "node": true
  },
  "rules": {
    "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
    "prettier/prettier": [
      "error",
      {
        "printWidth": 80,
        "singleQuote": true,
        "useTabs": false,
        "tabWidth": 2,
        "semi": true,
        "bracketSpacing": true
      }
    ]
  },
  "settings": {
    "import/resolver": {
      "node": {
        "paths": ["src"]
      }
    }
  }
}

但是 Flow 在我的机器上似乎很慢,我在我的 App.js 中添加了一个简单的函数:

const sum = (a: number, b: number) => a + b;
sum(1, '12323');

而且验证我的代码最多需要 10 秒,这实在是太糟糕了。有什么办法可以加快速度吗?

也许值得从 TypeScript 开始,而不必为 Flow 而烦恼?

最佳答案

关于可能的内存泄漏和与流相关的性能问题,有一些 Unresolved 问题,一些链接如下:

https://github.com/facebook/flow/issues/2152

https://github.com/flowtype/flow-bin/issues/70

这两种工具都很棒并且各有利弊,我个人建议也尝试一下 TypeScript 并自己进行比较。

根据我自己在大型代码库上的经验,我发现了 TypeScript:

  • 性能更高
  • 更多类型的外部库
  • 更大的社区

关于javascript - VSCode 中的流类型检查性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49480268/

相关文章:

reactjs - react : get element attribute from method

带有 Promise 和 if 语句的 Angular Auth Guard

javascript - 将 Sprite Canvas Material 颜色更改为另一个元素的颜色

javascript - 将我的应用程序中的 WebView 视频与其他应用程序的音乐一起播放

javascript - 尝试从表中列中的文本框获取值

javascript - 如何为 dojo 编辑器 fontChoice 插件设置我自己的值?

javascript - NPM:没有为 TypeScript 文件指定有效规则

javascript - 组件 react 中的传播运算符

typescript - TypeScript 中的 "ambient"是什么意思

javascript - 如何对列表的元素进行分组以形成一个新的列表