(一)背景
众所周知,js是弱类型的语言,没有专门的类型检测,所以为了避免类型不符合要求导致的bug,需要自行引入类型检测插件。
现有类型检测我了解typescript,所以知道 typescript 的同学就会理解 flow 的含义了,两者有异曲同工之处,都是负责类型检测。
(二)为什么用 Flow
Vue.js 在做2.0 重构的时候,在 es6 的基础上,除了使用 eslint 保证代码质量外,也引入了 flow 做静态类型检测。之所以选择 flow,主要是因为 Babel 和 ESlint 都有对应的 flow 插件以支持语法,可以完成现有的构建配置,非常小成本的改动就可以拥有静态检测的能力。所以vue源码中是使用Flow来做类型检测的
(三)Flow 的工作方式
(1)类型推断:通过变量的使用上下文来推断出变量的类型,类似于typescript 中的断言,然后根据推断来检查类型
(2)类型注释:事先注释好我们需要的类型,Flow根据我们注释好的类型进行检测
(四)Flow 代码简单使用
可以查看这篇文章:https://blog.csdn.net/qq_22844483/article/details/83154144
我用这段代码进行测试:
// @flow
function test (str) {
return str.split(' ')
}
test(11)
控制台报错: