Flow

191 阅读1分钟

javascript的静态类型检查器

安装

yarn add flow-bin --dev

使用

//@flowfunction sum (a: number, b: number) {    return a + b}console.log(sum(100, 100));console.log(sum('100', '100')); //报错

注释标记
1.//@flow 
2./** *  * @flow */
类型注解 :a: number, b: number ,a和b都是number类型
yarn flow init 初始化,在根目录创建一个.flowconfig文件
yarn flow 启动flow服务
yarn flow stop 停止服务

移除类型注解

1.安装flow-remove-types作为依赖库

yarn add flow-remove-types --dev

yarn flow-remove-types . -d dist

dist目录中生成文件,执行它

2.安装:yarn add @babel/core @babel/cli @babel/preset-flow --dev

在根目录下添加.babelrc文件,

{"presets":["@babel/preset-flow"]}

yarn babel . -d dist

基本类型

const a: string='sss'
const b:number = 123
const c:boolean = true
const d: null = null
const e: void = undefined
const f: symbol = Symbol()
数组类型
const arr1:Array<number> = [1,2,3]
const arr2: number[] =[4,5,6,'3']
const foo1: [string,number] = ['s',3]
对象类型
const obj1: {foo:string, bar:number} = {foo:'string',bar:100}
const obj2: {foo?:string, bar:number} = {bar:100}
const obj3: {[string]:string} = {}
obj3.key1 = 'value1'
obj3.key2 = 'value2'
特殊类型
const a1: 'foo' = 'foo'
const type:'success'|'warning'|'danger' = 'warning'
const b1: string | number = 2
type StringOrNumber = string|number
const b2:StringOrNumber = 5
问号代表可以是null或者undefined, 函数没有声明返回值, 即返回值也可以是undefined
const gender:?number = undefined

mixed/any类型,接收任意类型的数据(string,number,boolean...)

any是弱类型,不安全,尽量不要使用

mixed是强类型