typescript工具类型Partial、Pick、Omit

介绍typescript中的几个工具类型的使用。

假设当前我们有一个Person类型, 当我们使用Person类型的时候需要定义它的全部变量,使用起来灵活度太低,以下有几种方法可以让我们更灵活的使用类型
type Person = {
   name: string,
   age: number,
   hobby: string
}
let obj: Person = { name: 'jack'} // 类型“{ name: string; }”缺少类型“Person”中的以下属性: age, hobby
  • Partial:使用Partial来将已声明的类型中的所有属性标识为可选的。

    const usePartial: Partial<Person> = {}
  • Pick: 从声明的类型中选择指定的属性生成新的类型。
    // 类型PickPerson包含类型Person的name和hobby属性
    type PickPerson = Pick<Person, 'name' | 'hobby'>
    const usePick: PickPerson = { name: 'jack', hobby: 'swim' }
  • Exclude:用于排除不需要的属性,最后的到的是排除后的属性,常用来配合其他的方法使用。
    type PersonKeys = keyof Person;  // "name" | "age" | "hobby"
    type Age = Exclude<PersonKeys, 'name' | 'hobby'> // 等价于 type Age = "age"
  • Omit:从声明的类型中删除指定的属性生成新的类型。
    type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>; 
    Omit方法中使用了 Exclude Pick方法。结合一个小例子理解这个方法。
    type OmitPerson = Omit<Person, 'name'>
    // 第一步执行Exclude方法,Exclude<keyof Person, 'name'>, 等价于 'age' | 'hobby'
    // 第二步执行Pick方法,Pick<Person, 'hobby' | 'age'> 从类型Person中选择 'age' | 'hobby'属性
    // 因此type OmitPerson = {age: number, hobby: string }
    const useOmit1: OmitPerson = { age: 10, hobby: 'swim' }
posted @ 2022-03-18 17:30  Reminisce*  阅读(473)  评论(0编辑  收藏  举报