# 基本类型约束
> TS是一个可选的静态的类型系统
# 如何进行类型约束
– 仅需要在 变量、函数的参数、函数的返回值 位置加上 “`:类型“`
– ts在很多场景中可以完成类型推导
– any: 表示任意类型,对该类型,ts不进行类型检查
> 小技巧,如何区分数字字符串和数字,关键看怎么读?
> 如果安装数字的方式朗读,则为数字;否则,为字符串。
# 源代码和编译结果的差异
编译结果中没有类型约束信息
# 基本类型
- number: 数字
- string: 字符串
- boolean: 布尔值
- 数组 :number[] (数字类型的数组)
- object: 对象
- null 和 underfined
null 和 undefined是所有其他类型的子类型,他们可以赋值给其他类型的。
通过添加“`strictNullChecks:true“`,可以获得更严格的空类型检查,null 和 undefined 只能赋值给自身。
# 其他常用类型
– 联合类型:多种类型任选其一
> 配合类型保护进行判断
> 类型保护:当对某个变量进行类型判断之后,在判断的语句块中便可以确定它的确切类型,typeof可以触发类型保护。
– void类型: 通常用于约束函数的返回值,表示该函数没有任何返回
– never类型:通常用于约束函数的返回值,表示该函数永远不会结束。
– 字面量类型: 使用一个值进行约束
– 元祖类型(Tuple): 一个固定长度的数组,并且数组中每一项的类型确定
– any类型:any类型可以绕过类型检查,因此,any类型的数据可以赋值给任意类型。