常用ts语法
类型标记 Pick 与 Omit
ts
interface User {
id: number;
age: number;
name: string;
}
// 相当于: type PickUser = { age: number; name: string; }
type OmitUser = Omit<User, "id">
// 相当于: type PickUser = { id: number; age: number; }
type PickUser = Pick<User, "id" | "age">
// pick底层
type Pick<T, K extends keyof T> = {
[P in K]: T[P]
}
// omit底层
type Exclude<T, U> = T extends U ? never : T
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>