TS 是一个可选的静态的类型系统

类型约束

在变量,函数的返回值的位置上加上 :类型; 类型推导
any类型: 表示任意类型,对该类型,ts不进行类型推导
编译结果是没有类型约束的代码

  1. let gf:string;
  2. function gif(a:string,b:string):string{
  3. return a + b
  4. }
  5. gf = gif('孤','风')

基本类型

  • number 数字
  • string 字符串
  • boolean 布尔值
  • 数组 number[]
  • object 对象
  • null undefined (null 和 undefined是所有其他类型的子类型。它们可以赋值给其他类型,可以在配置中添加strickNullChecks:true 获得更加严格的类型检查,使得null和undefined只能赋值给自身)
  • 联合类型 number | string 多种类型任选其一,可以配合类型保护进行判断(即在判断的语句块中可以确定它的确切类型)
  • void类型: 用于约束函数的返回值,表示该函数没有任何返回
  • never类型: 用于约束函数的返回值,表示该函数永远不会结束
  • 字面量类型: 使用一个值进行约束
  • 元祖类型(Tuple): 一个固定长度的数组,并且数组的每一项的类型确定
  • any类型: any类型可以绕过类型检查,并且可以赋值给任意类型

    类型别名(联合类型 )

  1. type U = {
  2. name:string,
  3. age:number,
  4. id: number
  5. }
  6. function getU():U{
  7. return {
  8. name:"GF",
  9. age:20,
  10. id:1
  11. }
  12. }

函数重载

在函数实现之前,对函数调用的多种情况进行声明

  1. function addjob(a:number,b:number):number;
  2. function addjob(a:string,b:string):string;
  3. function addjob(a:number | string,b:number | string){
  4. if(typeof a === 'number' && typeof b === 'number'){
  5. return a * b
  6. }else if(typeof a === 'string' && typeof b === 'string'){
  7. return a + b;
  8. }
  9. }

可选参数: 在某些参数名后面加上问号,表示该参数可以不用传递,可选参数必须在参数列表的末尾

枚举 ENUM

枚举是通常用于约束某个变量的取值范围,编译结果会表现为对象 。
解决的问题:1. 在类型约束的位置,会产生重复代码,
2. 逻辑含义和真实的值产生了混淆,会导致当修改真实值的时候,产生大量的修改
3. 字面量类型不会进入到编译结果
定义:

  1. // 枚举名
  2. enum Gender {
  3. //枚举字段 逻辑含义
  4. male = "男", // 值 真实的值
  5. female = "女"
  6. }

枚举的规则

  • 枚举的字段值可以是字符串或是数字
  • 数字枚举的值会自增
  • 被数字枚举约束的变量,可以直接赋值为数字
  • 数字枚举的编译结果和字符串枚举有差异

注意事项
- 尽量不要在一个枚举中即出现字符串字段又出现数字字段
- 使用枚举时,尽量使用枚举字段的名称,而不是真实的值