VSCode 中的流类型检查性能

Posted

技术标签:

【中文标题】VSCode 中的流类型检查性能【英文标题】:Flow type checking performance in VSCode 【发布时间】:2018-09-03 22:29:35 【问题描述】:

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

打字稿 流

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

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

    yarn add -D eslint-plugin-prettier husky prettier pretty-quick babel-eslint eslint-plugin-flowtype flow-bin eslint 添加了 Airbnb React 样式:eslint --initflow init 已安装Flow Language Support 建议禁用 javascript 和 TypeScript 语言支持 在我的工作区设置中添加了以下配置:

-


  "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 是值得的?

【问题讨论】:

需要考虑的一点:当您退出 VSCode 时,VSCode 插件不会自行清理。在终端中使用ps aux | grep flow 检查僵尸流程 Flow 长期以来一直存在无法解决的内存问题:github.com/facebook/flow/issues/2152 但没有人知道原因 @AndyRay 忘了提到我在 Windows 上运行。运行的流程很少,但其中只有一个达到了 100mb,而我的机器有 16GB 的内存,这绰绰有余。不是吗? @EvaldasBuinauskas 你最终选择了什么,为什么?需要一点帮助。 @itaintme 使用了 TypeScript。接受的答案仍然非常有效并且有确切的原因:) 【参考方案1】:

关于可能的内存泄漏和与流相关的性能问题存在一些未解决的问题,以下是一些链接:

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

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

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

根据我对大型代码库的经验,我发现了 TypeScript:

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

【讨论】:

看来我还是试试TS吧。目前它的状态似乎更好。谢谢!

以上是关于VSCode 中的流类型检查性能的主要内容,如果未能解决你的问题,请参考以下文章

Java中有几种类型的流

为什么我的流测试未能检查某些节点中的事务,即使它们存在于存储中?

C++ 中的流类型,如何从 IstringStream 中读取?

如何强制 VSCode 使用本地安装的 TypeScript

Azure 数据工厂:如何从数据流转换中的流中获取第一行

Angular:类型检查模板无法正常工作