1. Choisissez
Sélectionnez un ensemble spécifié de propriétés parmi les propriétés de la définition de type et renvoyez une nouvelle définition de type.
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
scènes à utiliser
Il supprime principalement un sous-ensemble d’un type connu et le renvoie sous la forme d’un nouveau type.
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;
}
Analyse de principe
La logique principale est de savoir comment utiliser les génériques et les types d'union pour extraire dynamiquement un sous-ensemble d'un type connu.
K extends keyof T
:
Utilisé pour obtenir le type d'union de toutes les clés de type T.
interface Person {
name: string;
age: number;
id: number;
}
// Person 所有键的联合类型
type Keys = keyof Person; // 等效于 "name" | "age" | "id"
P in K
L'opérateur in peut parcourir les types d'union, les types d'énumération, etc...
interface Person {
name: string;
age: number;
id: number;
}
// Person 所有键的联合类型
type Keys = keyof Person; // 等效于 "name" | "age" | "id"
// 此时 Man 类型与 Person 相等
type Man = {
[key in Keys]: Person[key];
};
2.Omettre
type Omit<T, K extends string | number | symbol> = {
[P in Exclude<keyof T, K>]: T[P];
};
Omit a une fonction similaire à Pick, sauf qu'Omit prend en charge la suppression de certains attributs en fonction d'un type, puis renvoie un nouveau type.
interface User {
id: number;
name: string;
age: number;
sex: 0 | 1;
tel: number;
}
type EditUser = Omit<User, "id">; // 就是在 User 的基础上,去掉 id 属性
——————————————
Déclaration de droits d'auteur : cet article est un article original du blogueur CSDN "Special Red". Il suit l'accord de droits d'auteur CC 4.0 BY-SA. Veuillez joindre le lien source d'origine pour la réimpression et cette déclaration.
Lien d'origine : https://blog.csdn.net/weixin_44051815/article/details/123858655