number | string | boolean
字面量 | 限制变量的值就是该字面量的值
let a: 10;
a = 10;
// a = 11; 报错
let b: 'A' | 'B'; 联合类型
b = 'A'
b = 'B'
// b = 'C' 报错
any | 任意类型
对一个变量设置any,相当于关闭了TS的类型检测
使用TS时不建议使用any
let a: any(显式的any)
let a(隐式的any)
unknown | 任意安全的类型,表示未知类型的值
unknown类型的变量不能直接赋值给其他变量
let e: unknown;
let s : string;
s = e ;报错
s = e as string; 不报错,这种东西叫类型断言
s = <string>e; 这么写也是一样的,相当于来了个强制类型转换
void | 空值或undefined
变量中用的不多,主要限制函数的返回值
function fn(): void{ |return | return null | return undefined} 表示没有返回值
never | 没有值,不能是任何值
变量中用的不多,主要用于报错
function fn2(): never{
throw new Error('报错专用')
}
object | 对象
let a: object;
a = {};
a = function(){};
a = []
let b :{name: string, age?: number}; ?表示可选属性
let c :{name: string, [propName: string]: any} name是必须的,后面可以加属性是字符串的任意类型
let d: (a: number, b: number) => number; //设置函数结构的类型申明
d = function(a:number, b: number){
return a + b
}
array | 数组
类型[]
Array<类型>
let e: string[]; //表示字符串数组
let f: number[]; //表示数字数组
let g: Array<number>; //表示字符串数组
touple | 元组 [1, 2, 3] 固定长度的数组
[类型, 类型...]
let h: [string, number]
enum | 枚举 enmu{A, B} TS中新增的类型
enum Gender { 申明
Male = 0,
Femal = 1
}
let i: {name: string, gender: Gender} 使用
i = {
name: 'TOM',
gender: Gender.Femal 使用
}
console.log(i.gender === Gender.Male) 使用
补充:
// &表示与 同时满足
let j: {name: string} & { age: number }
j = {
name: 'tom',
age: 18
}
// 类型别名 自定义类型
type myType = 1 | 2 | 3 | 4 | 5;
let k: myType;