TS工具类型
Partial<T> 部分类型
将类型 T 中的所有属性变为可选属性
interface Person {
name: string;
age: number;
}
type PartialPerson = Partial<Person>
// PartialPerson 的类型为
// {
// name?: string | undefined;
// age?: number | undefined;
// }
Required<T> 必填类型
将类型 T 中所有属性变为必选属性。
interface Person {
name?: string;
age?: number;
}
type RequiredPerson = Required<Person>;
// RequiredPerson 的类型为
// {
// name: string;
// age: number;
// }
Readonly<T> 只读类型
将类型 T 中所有属性变为只读属性。
interface Person {
name: string;
age: number;
}
type ReadonlyPerson = Readonly<Person>
// ReadonlyPerson 的类型为
// {
// readonly name: string;
// readonly age: number;
// }
Record<K, T>
创建一个类型,其中属性名为 K 的类型为 T
type User = "Alice" | "Bob" | "Charlie";
type UserMap = Record<User, { age: number; address: string }>;
// UserMap 的类型为
// {
// Alice: { age: number; address: string; };
// Bob: { age: number; address: string; };
// Charlie: { age: number; address: string; };
// }
Exclude<T, U> 排除类型
从类型 T 中排除类型 U 中包含的属性。
type User = "Alice" | "Bob" | "Charlie";
type AdminUser = "Bob";
type NonAdminUser = Exclude<User, AdminUser>;
// NonAdminUser 的类型为 "Alice" | "Charlie"
Extract<T, U> 提取类型
从类型 T 中提取类型 U 中包含的属性。
type User = "Alice" | "Bob" | "Charlie";
type AdminUser = "Bob";
type AdminOnly = Extract<User, AdminUser>;
// AdminOnly 的类型为 "Bob"
Pick<T, K> 提取 key 类型
从类型 T 中选取指定的属性 K 并返回一个新的类型。
interface Person {
name: string;
age: number;
address: string;
email: string;
}
type BasicPerson = Pick<Person, "name" | "age">;
// BasicPerson 的类型为
// {
// name: string;
// age: number;
// }
Omit<T, K> 排除 key 类型
从类型 T 中删除指定的属性 K 并返回一个新的类型。
interface Person {
name: string;
age: number;
address: string;
email: string;
}
type BasicPerson = Omit<Person, "address" | "email">;
// BasicPerson 的类型为
// {
// name: string;
// age: number;
// }
Exclude/Extract用于type
Pick/Omit 用于 interface
ReturnType<T> 返回值类型
获取函数 T 的返回类型。
function add(a: number, b: number): number {
return a + b;
}
type AddReturnType = ReturnType<typeof add>;
// AddReturnType 的类型为 number