// 声明复合类型, ?表示字段可空 let t1 : [string, number, string?] = ['abc', 2, 'def'] leto1: {foo: string, bar: number} = {foo: 'foo', bar: 42}
// 联合类型 letv1: string | null = null
// 可直接限定变量取值范围, 达到类似枚举的效果 letv2: 1 | 2 | 3 = 2
// 强制类型转换 const rst = arr.find(n => n > 2) // number | undefined //注意: TS的所有类型检查都是编译期行为, 因此强制类型转换如果不符合预期, TS也无法进行提示. const pst = arr.find(n => n > 2) as number // number
// 枚举类型 enum MyEnum { A, B, C } // console.log(MyEnum.A)
类型别名
对于较为复杂的联合类型, 可使用类型别名进行简化
1 2 3
type TokenType = "IDENT" | "STR" | "NUM"
constv:TokenType = "IDENT"
函数
函数的类型标记方式与变量相同, 整体与Python的风格类似
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// 常规函数 functionadd(x: number, y: number): number { return x + y; }