# 类型声明
声明变量和声明函数的参数时可以同时声明变量类型,函数参数如果不显示声明类型则默认是object类型
例如:
let a: string = "123"
var b: G1 -- G1是某个record类型
let b: int | string | Person -- Person是某个record类型,这种声明表示b是int或string或Person类型,也就是union类型
let c ?: int -- 这种表示声明的变量c是int或nil类型的,相当于 int | nil的union类型
let function add(a: number, b: number, c ?: Array<number>)
return a + b
end
声明类型时也可以声明函数类型,函数的签名类型语法是 (ArgTypeName1, … ) => RetTypeName
例如
let a: (int, int, int) => string
还可以将变量或者函数参数的类型声明为Function,表示这个变量/参数的类型是函数,能接受任何函数类型的值,不论参数数量,参数类型和返回值类型。 例如
let function add(a: number, b: number)
return a + b
end
let add2: Function = add
let r = add2('123') -- 这段代码编译期类型没问题,但是运行时会报类型错误