Flow.js 是什么
相信大家对于 TypeScript 已经有了全面的了解,这里就不赘述。所以我们直接来看一下 Flow.js 是什么。
Flow.js 是 facebook 开发的一个 JavaScript 语言的 「静态类型检查器」,官方的介绍原文就是 “FLOW IS A STATIC TYPE CHECKER FOR JAVASCRIPT.”
这与 TypeScript 是 JavaScript 语言的“超集”,本质上就有了不同。Flow.js 定位于工具,而 TypeScript 定位于一门语言。
由于定位的不同,所以 Flow.js 不提供除类型系统之外的任何其他功能。
社区支持对比
社区的支持非常重要。项目从社区获得的支持,是项目生存的决定性因素。更久远,更成熟的 TypeScript 有一个比 Flow 更大的社区。
同时 TypeScript 也有一个完善的生态系统,Angular.js 和基于它,最新的 Vue.js 也用 TypeScript 重写了。而且拥有基于 TypeScript 开发的代码编写工具(VS Code)。VS Code 性能非常好而且正在积极发展,迅速普及。
Flow 的社区规模较小,因此缺乏支持。当然,Flow 也处于非常活跃的发展阶段。
最后,我们可以比较下二者的网站和官方文档。我们先忽略 TS 社区中一些优秀的指南,只看官方的东西。我们会发现 Flow 的官网设计明显比 TypeScript 好看。但很可惜,Flow 的文档并没有很完善。
构建对比
TS 生态中,我们可以使用 TypeScript 编译器(tsc)或者 Babel 插件来将 .ts 文件编译为 .js 文件。
由于 Flow 只是静态类型检查器,所以我们的文件后缀依旧是 .js 但是我们可以使用 CLI 工具来检查代码。
应用场景对比
Angular.js 和最新的 Vue.js 都基于 TypeScript 编写,所以也可以和 TypeScript 生态有很好的集成。
React.js 与 Flow.js 师出同门,所以有人可能会觉得 React 对于 TypeScript 的支持不太够,但实际上由于社区的贡献,TypeScript 在当下开发 React 应用已经非常完善了。
语法差异
有人整理了一份比较完善的语法差异对比文件,想要深入了解的同学可以查看 https://github.com/niieani/typescript-vs-flowtype