Flow规定,在需要做 'Flow 静态类型检查' 文件的开头加上`// @flow`或`/* @flow */`这段注释,让工具识别这个文件需要做静态类型检查,否则就会当作一般 js 文件对待,不做静态类型检查。
我们先在src目录下面新建一个index.js文件,再把前面简介出现的例子拿来用,利用Flow类型的定义方式,来解决这个例子的问题,改写为下面的代码,
```
// @flow
function foo(x: number): number {
return x + 666;
}
foo('HelloWorld!')
```
运行一下检查命令看看,
> npm run flow
结果如下:
> my-project@ flow E:\Flow
> flow
> Error ------------------------------------------------------------------------------------------------- src/index.js:7:5
> Cannot call `foo` with `'HelloWorld!'` bound to `x` because string [1] is incompatible with number [2].
> src/index.js:7:5
> 7| foo('HelloWorld!')
> ^^^^^^^^^^^^^ [1]
>
> References:
> src/index.js:3:17
> 3| function foo(x: number): number {
> ^^^^^^ [2]
> Found 1 error
当使用非数字类型的值作为传入值时,就会出现由Flow工具发出的警告消息,上面大致的意思是foo函数调用失败,因为所声明的参数是number类型,而你传入的是string类型。