概念:Flow 是 facebook 出品的 JavaScript 静态类型检查工具。Vue.js 的源码利用了 Flow 做了静态类型检查,所以了解 Flow 有助于我们阅读源码。
Vue为什么用 Flow:Javascript是动态类型语言,它的灵活性有目共睹,但是过于灵活的副作用是很容易写出非常隐蔽的隐患代码,在编译时候不报错,而在运行阶段可能出现各种各样的奇怪bug。所以就需要一种类型检查的工具避免这样的隐患,而Flow显然是不错的选择。
类型检查:当前动态类型语言的发展趋势,所谓类型检查,就是在编译期尽早发现(由类型错误引起的)bug,又不影响代码运行(不需要运行时动态检查类型),使编写 JavaScript 具有和编写 Java 等强类型语言相近的体验。
Tip: 项目越复杂就越需要通过工具的手段来保证项目的维护性和增强代码的可读性
为什么选择Flow:主要因为Babel和Eslint都有对应的Flow插件以支持语法,遵循最小改动原则,以最低成本改动就可以拥有静态类型检查的能力。
工作方式:
1. 类型推断: 通过变量的使用上下文来推断出变量类型,然后根据这些推断来检查类型
2. 类型注释: 事先注释好我们期待的类型,Flow 会基于这些注释来判断,如let a: number = 1
总结: 和TypeScript很类似