• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Typescript高级用法keyof,Pick,Record,Partial,Required,Exclude,Omit? ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

记录一下typescript中一些类型高级用法:

首先声明一个类型IUser:

interface IUser {
  name: string;
  age?: number;
  class?: string;
  sex: string;
}

1、keyof:作用是获取键

type keys = keyof IUser;

2、Pick:从类型定义的属性中,选取指定一组属性,返回一个新的类型定义。

源码:

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

例子:

type IPG = Pick<IUser, 'name'>
let gg: IPG = {
  name: '5'
}

3、Record:以 typeof 格式快速创建一个类型,此类型包含一组指定的属性且都是必填。

源码:

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

例子:

type IRH = Record<keyof IUser, string>
let hh: IRH = {
  name: '6',
  age: '6',
  class: '6',
  sex: '0'
}

4、Partial: 将传入的属性变为可选项

源码:

type Partial<T> = { [p in keyof T]?: T[p] };

例子:

type IPB = Partial<IUser>;

let bb: IPB = {
  name: '1',
  age: 1
}

5、Required:将传入的属性变为必选项

源码:

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

例子:

type IRC = Required<IUser>;

let cc: IRC = {
  name: '2',
  age: 2,
  class: '2',
  sex: '0'
}

6、Exclude :的作用是两个参数对比过滤出前面参数独有的。

源码:

type Exclude<T, U> = T extends U ? never : T;

例子:

type IED = '1' | '2' | '3';
type IEE = '4';
let dd: Exclude<IED, IEE> = '1'

7、Omit :的作用是将前面参数中后面的属性过滤掉

源码:

type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;

例子:

type IOF = Omit<IUser, 'sex'>
let ff: IOF = {
  name: '4',
  age: 4,
  class: '4',
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
TypeScript-axios模块进行封装的操作与一些想法发布时间:2022-07-22
下一篇:
初识Typescript及vscode环境配置发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap