type-challenges/README.zh-CN.md at main · TIMPICKLE/type-challenges · GitHub
最近真的是迷上了type-challenges。无法自拔 TS真是太香了!
今天手写一个pick
从类型定义的属性中,选取指定一组属性,返回一个新的类型定义。
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
interface Person {
name: string;
age: number;
id: number;
sex: 0 | 1;
}
// 问女生年纪不太礼貌,所以我们不需要 age 这个属性
type Woman = Pick<Person, "name" | "id">;
// 此时 Woman 等效于 Female
interface Female {
name: string;
id: number;
}
tips:在JS中我们操作的是对象,在TS中我们操作的类型
ts的映射类型语法:
自己实现TS的pick
keyof T 用于获取所有key,即返回类型是联合类型。