联合类型和交叉类型
联合类型:联合类型的特点是可以包含多个类型,但只允许其中一个类型作为变量的实际类型。用 | 表示
交叉类型:指的是多个类型的并集,表示一个类型同时具备这些类型的特点,用&表示
interface A {
name: string,
age: number,
}
interface B {
sex: 'male' | 'female'
}
type D = A | B;
const d: D = {
name: '1',
age: 1,
}
// d的类型为 {name: string,age: number} 或 {sex: 'male' | 'female'}
type AB = A & B;
// AB的类型为 {name: string,age: number, sex: 'male' | 'female'}
使用Pick获取指定字段类型
type OriginalType = {
id: number;
name: string;
age: number;
email: string;
};
type DesiredType = Pick<OriginalType, 'name' | 'age'>;
// DesiredType 的类型为 { name: string, age: number }
使用Omit排除指定字段类型
type OriginalType = {
id: number;
name: string;
age: number;
email: string;
};
type DesiredType = Omit<OriginalType, 'id' | 'email'>;
// DesiredType 的类型为 { name: string, age: number }
使用Partial更改对象中的属性为可选属性。
interface Point {
x: number;
y: number;
}
let test: Partial<Point> = { x: 1 };
使用Required将对象中的属性都改成必选属性
interface Point {
x: number;
y: number;
z?: number;
}
let test: Required<Point> = { x: 1, y: 2, z: 3};
Record是定义具有特定键类型和值类型的对象类型的简写方式。
const userInfo: Record<string, any> = {
'name': 'zhang',
'age': 25
};
Exclude从联合类型中删除类型。
type Primitive = string | number | boolean;
const value: Exclude<Primitive, string> = true;