Flow 是facebook 出品的 Javascript 静态类型检查工具。Vue.js 的源码利用了 Flow 做了静态类型检查, 了解 Flow 有助于我们阅读源码。
Javascript 是动态类型语言,其非常灵活,过于灵活导致很容易写出非常隐蔽的隐患代码,在编译期甚至看不出来有啥问题,但在运行阶段就可能出现各种诡异的 bug 。
类型检查是当前动态类型语言的发展趋势,所谓的类型检查,就是尽可能早点发现由于类型引起的bug,又不影响代码运行。
Flow 工作方式
通常类型检查分为2中方式:
类型推断:通过变量,使用上下文来推断出变量类型,然后根据这些推断来检查类型
类型注释:事先注释好期待的类型,Flow 基于这些注释来判断
有时候我们想引用第三方库,或者自定义一些类型,但 Flow 并不认识,因此检查的时候会报错。为了解决这类问题,Flow 提出了一个 libdef 的概念,可以用来识别这些第三方库或者是自定义类型,而 Vue.js 也利用了这一特性。