Pick 与 Omit 及 Partial 与 Required 及 enum枚举 TS内置类型

Pick 与 Omit TS内置类型

自我记录

Pick 与 Omit 从现有类型中得到可复用类型
从类型定义的属性中,选取指定一组属性,返回一个新的类型定义。
Pick 可以从一个对象类型中 取出某些属性
Omit 可以从一个对象类型中 排出某些属性

type Pick<T, K extends keyof T> = {
    
    
    [P in K]: T[P];
};
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;

Pick使用方法

type Person = {
    
    
  name: string
  age: number
  id: number
}
type PickPerson = Pick<Person, 'age'>
// PickPerson === { age: string }
type PickPerson = Pick<Person, 'age' | 'id'>
// PickPerson === { age: string , id: string}

Omit使用方法

type Person = {
    
    
  name: string
  age: number
  id: number
}
type OmitPerson = Omit<Person, 'age'>
// OmitPerson === { name: string , id: string }
type OmitPerson = Omit<Person, 'age' | 'id'>
// OmitPerson === { name: string}

Partial 与 Required TS内置类型

自我记录

Partial 把对象类型的属性全部转换为可选属性
Required 把对象类型的属性全部转换为必选属性

Partial使用方法

type Person = {
    
    
  name: string
  age: number
  id: number
}
type PartialPerson = Partial<Person>
// PartialPerson === type PartialPerson = {
    
    
//   name?: string | undefined;
//   age?: number | undefined;
//   id?: number | undefined;
//}

Required使用方法

type Person = {
    
    
  name?: string
  age?: number
  id?: number
}
type RequiredPerson = Required<Person>
// RequiredPerson === type RequiredPerson = {
    
    
//  name: string
//  age: number
//  id: number
//}

enum TS内置类型

作用:表示一组明确可选的值,和字面量类型配合联合类型类似。
解释:枚举可以定义一组常量,使用该类型后,约定只能使用这组常量中的其中一个。
枚举基本语法
默认从 0 开始自增的数值
可以使用字符串,但是后面的值都需要使用字符串。
建议 ts 文件定义枚举,枚举的值经常需要在运行的时候使用,d.ts 不参与运行
枚举类型需要在 ts 文件中,因为枚举会编译成 js 代码

enum使用方法

// 创建枚举类型 默认顺序就是 0 | 1 | 2 | 3
enum Direction {
    
     Up, Down, Left, Right }
// 自定义顺序就是 1 | 2 | 3 | 4
// enum Direction { Up = 1, Down, Left, Right }
// 自定义顺序就是 5 | 6 | 7 | 8
// enum Direction { Up = 5, Down, Left, Right }
// 自定义顺序就是 5 | 10 | 19 | 30
// enum Direction { Up = 5, Down = 10, Left = 19, Right = 30 }
// 使用枚举类型
const changeDirection = (direction: Direction) => {
    
    
  console.log(direction)
}

// 调用函数时,需要应该传入:枚举 Direction 成员的任意一个
// 类似于 JS 中的对象,直接通过 点(.)语法 访问枚举的成员
changeDirection(Direction.Up)

猜你喜欢

转载自blog.csdn.net/zhgweb/article/details/129882784
今日推荐