1. 联合类型
可以使用 | 来链接多个类型 叫联合类型
let b:male | female
let c:booler | string
2.any类型
标识任意类型,可以任意赋值;一个变量设置类型为any,相当于对该变量关闭了ts的类型监测,使用ts时,建议不使用any
let d:any //申明变量指定类型为any,称为显示any
let d //申明变量不指定类型,则ts解析器会自动判断变量类型为any 称为隐式any
d=2
d='ssss'
3.unknown类型
let e:unknown
e=22
e=true
e='dddd'
any和unknown的区别
//d的类型为any,它可以赋值给任意变量
let d
let e:unknown
let s:string
s=d //不会有报错提示 本来s类型为string ,这样一赋值,导致s类型关了,这样s的类型也就会出问题了
e=‘hello’
s=e//会有报错,此时e为string类型,但还是报错提示,是因为看的是这个变量,不是e的值
//unknown实际上就是一个类型安全的any,unknown的变量不能赋值给其他变量
如果就想e的值赋值给s,可以写:
if(typeof e==='string){
s=e
}
或
s=e as string //类型断言,告诉解析器e就是string类型
s=<string>e
//类型断言语法
变量 as类型
<类型>变量
4.object类型
//{}定义对象中可以包含哪些属性,{属性名:属性值,属性名?:属性值},在属性名后加?标识属性可选
let b:{name:string,age?:number}
b={name:'sdfg',age:9}
//[propName:string]:any; 表示任意类型的属性
let c:{name:string,[propName:string]:any}
c={name:'zhagnsan',age:17,gender:'男'}//c对象里必须要有name属性,其他属性可选
5.数组
//2种写法
let e:string[]
e=['d','a']
let g:Array<number>
g=[4,6,7]
7.元祖
//元祖就是固定长度的数组
let h:[string,number]
h=['fgh',8]
8.枚举
enum Gender{
female=0,
male=1,
}
let i:{name:string,gender:Gender}
i={name:‘张数’,gender:Gender.female}
类型别名
type myType=1|3|5|7 //定义类型别名为:myType
let k:myType //k的类型为myType
let l:myType //l的类型为myType
k=2
l=7