Pick<Type, Keys> 可从类型中选取一组属性键来构造类型。以下面的 User 类型为例:
type User = {
name: string;
age: number;
gender: string;
};经 Pick<Type, Keys> 转换后得到:
type User = {
name: string;
age: number;
gender: string;
};
type PickUser = Pick<User, 'name' | 'age'>;
// `PickUser` 类型相对于 `User` 类型少了 `gender` 属性
const pickUser: PickUser = {
name: 'Olive',
age: 18,
};转换后的 PickUser 类型与下面的类型是等价的:
type PickUser = {
name: string;
age: number;
};那么,Pick<Type, Keys> 是如何转换类型的呢?我们通过它的类型定义来分析一下:
/**
* From T, pick a set of properties whose keys are in the union K
*/
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};结合上面的示例,Pick 类型定义中的泛型 T 就是我们刚才定义的类型 User,后面的 K extends keyof T 则表示泛型 K 继承自联合类型 keyof T,由此可以得出泛型 K 是一个联合类型。
通过关键字 in 来遍历联合类型 K,将联合类型中的每个成员作为 key,通过方括号语法访问类型 T 中该成员对应的值,即 T[P]。
以上就是 Pick<Type, Keys> 的用法和类型定义的解析,欢迎在下方留言交流。
One comment
新车即将上线 真正的项目,期待你的参与coinsrore.com