交叉类型 &
将多个类型(通常是对象类型)合并为⼀个类型,最终类型将拥有多个类型的全部属性。
interface Person {
name: string;
age: number;
}
interface Employee {
company: string;
jobTitle: string;
}
// 定义交叉类型
type EmployedPerson = Person & Employee;
联合类型 |
最终类型可为多个类型中的一种
type gender = "男" | "女" | "未知"
遍历联合类型 in
type u = 'a'|'b'|'c';
//以下a,b两个类型相同
type a = {
[x in u]: number;
};
type b = {
a: number,
b: number,
c: number
};
获取对象指定属性的类型 [ ]
type Person={
name:string
age:number
};
type ageType = Person['age']; //number
获取对象所有属性的类型 keyof
获取对象类型中所有键名组成的联合类型
type TypeObj = {
num: number,
str: string,
};
type Keys = keyof MyObj; // 'num'|'str'
判断子类型 extends?:
- 联合类型中, A2 为联合类型 A1 中的任何一种类型,则 A2 是 A1 的子类型
type A1= string | number;
type A2 = string;
// A的类型为 string
type A = A2 extends A1 ? string : number
- 接口中,只要 A2 包含 A1 的全部属性,则 A2 是 A1 的子类型
interface A1 {
name: string
}
interface A2 {
name: string
age: number
}
// A的类型为string
type A = A2 extends A1 ? string : number;