此博客是本人从学生时代开始做笔记所用, 部分是工作所遇问题,做填坑笔记,部分闲来查阅资料,加上自己的理解所总结的学习笔记, 常忙得不可开交,若漏了资料来源,望通知~ 前路漫漫,写点东西告诉自己正在一点点进步,而不要迷失于繁忙。

映射属性,Required、Partial与Pick

有时候需要一个类型,它依赖于上一个类型,但对属性的要求却不同,简而言之:从旧类型中创建新类型

这里需借助 映射属性 (不能用于interface,只能用于type!)

 

全转为readonly

type Readonly<T> = {
    readonly [P in keyof T]: T[P];
}
type ReadonlyPerson = Readonly<Person>

备注:Person可为interface或type

 

全转为Partial

interface Person {
  name: string;
  age: number;
}

type Partical<T>= {
  [P in keyof T]?: T[P];
}

type ParticalPerson= Partical<Person>

interface ParticalInterfacePerson extends ParticalPerson {} //借助type转换interface

 

转换为Pick (筛选一部分属性)注意in

interface Person {
    name: string;
    age: number;
}

type Pick1<T, K extends keyof T>= {
    [P in K]?: T[P];
}

type PickPerson= Pick1<Person, 'name'>

 

备注:Pick、Required、Partial现已内置于typescript

posted @ 2020-01-31 20:53  炎泽  阅读(541)  评论(0编辑  收藏  举报