类型约束
在变量,函数的返回值的位置上加上 :类型
; 类型推导
any类型: 表示任意类型,对该类型,ts不进行类型推导
编译结果是没有类型约束的代码
let gf:string;
function gif(a:string,b:string):string{
return a + b
}
gf = gif('孤','风')
基本类型
- number 数字
- string 字符串
- boolean 布尔值
- 数组 number[]
- object 对象
- null undefined (null 和 undefined是所有其他类型的子类型。它们可以赋值给其他类型,可以在配置中添加
strickNullChecks:true
获得更加严格的类型检查,使得null和undefined只能赋值给自身) - 联合类型 number | string 多种类型任选其一,可以配合类型保护进行判断(即在判断的语句块中可以确定它的确切类型)
- void类型: 用于约束函数的返回值,表示该函数没有任何返回
- never类型: 用于约束函数的返回值,表示该函数永远不会结束
- 字面量类型: 使用一个值进行约束
- 元祖类型(Tuple): 一个固定长度的数组,并且数组的每一项的类型确定
- any类型: any类型可以绕过类型检查,并且可以赋值给任意类型
类型别名(联合类型 )
type U = {
name:string,
age:number,
id: number
}
function getU():U{
return {
name:"GF",
age:20,
id:1
}
}
函数重载
在函数实现之前,对函数调用的多种情况进行声明
function addjob(a:number,b:number):number;
function addjob(a:string,b:string):string;
function addjob(a:number | string,b:number | string){
if(typeof a === 'number' && typeof b === 'number'){
return a * b
}else if(typeof a === 'string' && typeof b === 'string'){
return a + b;
}
}
可选参数: 在某些参数名后面加上问号,表示该参数可以不用传递,可选参数必须在参数列表的末尾
枚举 ENUM
枚举是通常用于约束某个变量的取值范围,编译结果会表现为对象 。
解决的问题:1. 在类型约束的位置,会产生重复代码,
2. 逻辑含义和真实的值产生了混淆,会导致当修改真实值的时候,产生大量的修改
3. 字面量类型不会进入到编译结果
定义:
// 枚举名
enum Gender {
//枚举字段 逻辑含义
male = "男", // 值 真实的值
female = "女"
}
枚举的规则
- 枚举的字段值可以是字符串或是数字
- 数字枚举的值会自增
- 被数字枚举约束的变量,可以直接赋值为数字
- 数字枚举的编译结果和字符串枚举有差异
注意事项
- 尽量不要在一个枚举中即出现字符串字段又出现数字字段
- 使用枚举时,尽量使用枚举字段的名称,而不是真实的值