Pick 用来获取对象类型的部分类型。
首先声明一个 MyPick 类型。
type MyPick = any;
按照要求该类型需要接受两个泛型参数,一个类型 T 和 一个联合类型 K。
type MyPick<T, K> = any;
T 的所有属性会组成一个联合类型,K 必须是这个联合类型的子类型。先用 keyof 获取 T 类型所有属性组成的联合类型,再用 extends 来限制 K。这样泛型参数就定义好了。
type MyPick<T, K extends keyof T> = any;
用 in 来遍历 K ([Key in k]),作为新类型的 key,用 T[Key] 的方式来获取该 key 的类型。
type MyPick<T, K extends keyof T> = {
[Key in K]: T[Key];
};