Flow
# Flow
Vue.js 的源码利用了 Flow 做了静态类型检查
JavaScript 是动态类型语言
类型检查是当前动态类型语言的发展趋势,所谓类型检查,就是在编译期尽早发现(由类型错误引起的)bug,又不影响代码运行(不需要运行时动态检查类型),使编写 JavaScript 具有和编写 Java 等强类型语言相近的体验。
项目越复杂就越需要通过工具的手段来保证项目的维护性和增强代码的可读性。
Babel 和 ESLint 都有对应的 Flow 插件以支持语法,可以完全沿用现有的构建配置
# Flow 的工作方式
通常类型检查分成 2 种方式:类型推断, 类型注释
类型注释是以冒号 : 开头,可以在函数参数,返回值,变量声明中使用。
可以对类自身的属性做类型检查,也可以对构造函数的参数做类型检查。
若想任意类型 T 可以为 null 或者 undefined,只需类似如下写成 ?T 的格式即可。
/*@flow*/
var foo: ?string = null
1
2
3
2
3
https://flow.org/en/docs/types/
# Flow 在 Vue.js 源码中的应用
Flow 提出了一个 libdef 的概念,可以用来识别这些第三方库或者是自定义类型
静态类型检查的方式非常有利于大型项目源码的开发和维护。