L'utilisation et la différence entre Pick et Omit dans ts

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

Supongo que te gusta

Origin blog.csdn.net/hzxOnlineOk/article/details/133355729
Recomendado
Clasificación