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 --init
跑flow 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 中的流类型检查性能的主要内容,如果未能解决你的问题,请参考以下文章
为什么我的流测试未能检查某些节点中的事务,即使它们存在于存储中?
C++ 中的流类型,如何从 IstringStream 中读取?