TS内置类型

144 阅读1分钟

ts的一些内置类型

1.Partial 将类型转化成可选属性

interface Person {
  name: string;
  age: string;
  sex: string;
}
type Partial = Partial<Person>
实现原理
type DeepPartial<T> = {
    [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K]
}
type DeepPartialPerson = DeepPartial<Person>;

2.Required 将类型转化成必填属性

interface Person {
  name?: string;
  age?: string;
  sex?: string;
}
type Required = Required<Person>
实现原理 同上

3.Readonly 将类型转化成只读属性

interface Person {
  name: string;
  age: string;
  sex: string;
}
type Readonly = Readonly<Person>
实现原理
type Readonly<T> = { readonly [K in keyof T]: T[K] }
type RequiredPerson = Readonly<Person>

4.Pick 挑选所需属性

interface Person {
  name: string;
  age: string;
  sex: string;
}
type Pick = Pick<Person'name' | 'age'>
实现原理
type Pick<T, U extends keyof T> = { [P in U]: T[P] }
type PickPerson = Pick<Person, 'name' | 'age'>

5.Record 记录属性

let person: Record<string, any> = { name: 'zf', age: 11 };
实现原理
type Record<K extends keyof any, T> = { [P in K]  : T }
let person: Record<string, any> = { name: 'zf', age: 11 };

6.Omit 忽略属性

let person = {
    name: 'zhufeng',
    age: 11,
    address: '回龙观'
}
type OmitAddress = Omit<typeof person, 'address'>
实现原理
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>