yarn add flow-bin --dev
去设置里搜索 JavaScript Validate:Enable 来进行启用禁用
yarn add flow-remove-types --dev
yarn flow-remove-types . -d dist
yarn add @babel/core @babel/cli @babel/preset-flow --dev
添加.babelrc文件
{
"presets": ["@babel/preset-flow"]
}
使用命令,完成src的文件编译到dist中
yarn babel src -d dist
可以通过安装flow language support 来实现vscode对flow的检测
function sum(a: number, b: number) {
return a + b
}
let a :number = 10
function fn() :number{
return 10
}
// Infinity代表无穷大
const a :number = Infinity // NaN // 10
const b :string = ‘str‘
const c :boolean = false // true
const d :void = undefined
const e :null = null
const f :symbol = Symbol()
const arr1 :Array<number> = [1, 2, 3]
const arr2 :Array<string> = [‘x‘, ‘w‘, ‘2‘]
// 元组
const arr3 :[string, number] = [‘xx‘, 1]
const obj1: { foo: string, bar: number } = { foo: ‘str‘, bar: 111 }
// foo就是可有可无的属性了
const obj2: { foo?: string, bar: number } = { bar: 111 }
// 可随意添加符合约束的键值对
const obj3: { [string]: string } = {}
obj3.key1 = ‘xxx‘
// 可以通过函数签名来设置函数的约束
function foo(callback: (string, number) => void) {
callback(‘str‘, 100)
}
foo(function(str, n) {
})
// a只能为foo字符串
const a: ‘foo‘ = ‘foo‘
// 或
const type: ‘success‘ | ‘warning‘ | ‘danger‘ = ‘success‘
// 定义类型变量,方便重用
type stringOrNumber = string | number
const b: stringOrNumber = ‘222‘
// 下面两个是一样的, maybe类型多提供了null和void
const gender: ?number = undefined
const gender: number | null | void = undefined
mixed 强类型
function passMixed(val: mixed) {
// val.substr(1) 是不行的,因为mixed是独立的类型,必须经过判断才能使用相应的类型方法
if (typeof val === ‘string‘) {
val.substr(1)
}
if (typeof val === ‘number‘) {
val * val
}
}
passMixed(‘xxx‘)
passMixed(111)
any 弱类型
function passAny(val: any) {
val.substr(1)
val * val
}
passAny(‘xx‘)
passAny(11)
原文:https://www.cnblogs.com/Huskie-/p/14755129.html