映射属性,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