当前位置: 首页 > news >正文

漳诈网站建设国内比较好的saas平台

漳诈网站建设,国内比较好的saas平台,做公众号选择图片的网站,怎么做淘客推广网站掌握TypeScript的映射类型,了解TypeScript内置的实用类型是如何工作的。 您是否使用过Partial、Required、Readonly和Pick实用程序类型? 你知道他们内部是怎么运作的吗? 如果您想彻底掌握它们并创建自己的实用程序类型,那么不要错过本文所涵盖的内容。…

图片

掌握TypeScript的映射类型,了解TypeScript内置的实用类型是如何工作的。

您是否使用过Partial、Required、Readonly和Pick实用程序类型?

图片

你知道他们内部是怎么运作的吗? 如果您想彻底掌握它们并创建自己的实用程序类型,那么不要错过本文所涵盖的内容。

用户注册是日常工作中普遍存在的场景。在这里,我们可以使用TypeScript定义一个User类型,其中所有的键都是必需的。

type User = {  name: string;   password: string;   address: string;   phone: string;};

通常,对于注册用户,我们只允许用户修改一些用户信息。此时,我们可以定义一个新的UserPartial类型,它表示要更新的用户对象的类型,其中所有键都是可选的。​​​​​​​

type UserPartial = {  name?: string;   password?: string;   address?: string;   phone?: string; };

对于查看用户信息的场景,我们希望用户对象对应的对象类型中的所有键都是只读的。对于这个需求,我们可以定义Readonly User类型。​​​​​​

type ReadonlyUser = {  readonly name: string;  readonly password: string;  readonly address: string;  readonly phone: string;};

回顾已经定义的三个与用户相关的类型,您将看到它们包含大量重复的代码。

图片

图片

那么我们如何减少上述类型中的重复代码呢? 答案是您可以使用映射类型,这是可用于将原始对象类型映射到新对象类型的泛型类型。

图片

映射到可选属性

图片

图片

映射到只读属性

图片

映射类型的语法如下:

图片

映射类型语法

其中K中的P类似于JavaScript的for. .in语句,用于遍历类型K中的所有类型,以及类型变量T,用于表示TypeScript中的任何类型。

图片

映射类型修饰符

您还可以在映射过程中使用附加的修饰符read-only和问号(?)。通过添加加号()和减号(-)前缀来添加和删除相应的修饰符。默认情况下,如果没有添加前缀,则使用加号。

现在我们可以总结一下常见映射类型的语法。​​​​​​​

{ [ P in K ] : T }{ [ P in K ] ?: T }{ [ P in K ] -?: T }{ readonly [ P in K ] : T }{ readonly [ P in K ] ?: T }{ -readonly [ P in K ] ?: T }

在介绍映射类型的语法之后,让我们看一些示例。

图片

让我们看一下如何使用映射类型重新定义UserPartial类型​​​​​​​

type MyPartial<T> = {  [P in keyof T]?: T[P];};
type UserPartial = MyPartial<User>;

在上面的代码中,我们定义了MyPartial映射类型,然后使用它将User类型映射到UserPartial类型。keyof操作符用于获取类型的所有键,其返回类型为联合类型。类型变量P在每次遍历时变为不同的类型T[P],这与属性访问的语法类似,用于获取与对象类型的属性对应的值的类型。

让我们来演示MyPartial映射类型的完整执行流程,如果你不确定,可以多看几遍,加深对TypeScript映射类型的理解。

MyPartial执行流程:

图片

TypeScript 4.1允许我们使用 as 子句来重新映射映射类型中的键。其语法如下:​​​​​​​

type MappedTypeWithNewKeys<T> = {    [K in keyof T as NewKeyType]: T[K]    //            ^^^^^^^^^^^^^    //            New Syntax!}

其中NewKeyType的类型必须是字符串|数字|符号联合类型的子类型。使用 as 子句,我们可以定义一个Getter实用程序类型,为对象类型生成相应的Getter类型。​​​​​​​

type Getters<T> = {  [K in keyof T as `get${Capitalize<string & K>}`]: () => T[K]};​​​​​​​
interface Person {
name: string;    age: number;    location: string;}​​​​​​
type LazyPerson = Getters<Person>;// {//   getName: () => string;//   getAge: () => number;//   getLocation: () => string;// }

图片

在上面的代码中,由于keyof T返回的类型可能包含符号类型,并且Capitalize实用程序类型要求要处理的类型必须是字符串类型的子类型,因此需要使用 & 操作符进行类型过滤。

此外,在重新映射键的过程中,我们可以通过返回 never 类型来过滤键。​​​​​​​

// Remove the 'kind' propertytype RemoveKindField<T> = {    [K in keyof T as Exclude<K, "kind">]: T[K]};​​​​​​
interface Circle {    kind: "circle";    radius: number;}​​​​​
type KindlessCircle = RemoveKindField<Circle>;//   type KindlessCircle = {//       radius: number;//   };

图片

读完这篇文章,我相信你已经理解了映射类型是做什么的,以及TypeScript中的一些实用工具类型是如何实现的。

 欢迎关注公众号:文本魔术,了解更多

http://www.yayakq.cn/news/728308/

相关文章:

  • 网站做301打不开网站关键词排名手机优化软件
  • 长春建网站网站设计与编辑
  • 专业网站建设品牌策蕲春做网站
  • 广东专业网站建设网站建设代码问卷调查
  • 网页设计培训教育机构搜索引擎优化seo专员
  • 做视频直播的网站最新新闻今天最新新闻
  • 北京网站排名优化网站tag设计
  • 建设部网站白蚁文件安徽网络优化方案
  • 成都科技网站建设费用企业微信怎么注册
  • 群辉怎么做网站推销别人做网站有什么作用
  • 学校网站建设的背景网站建设套餐128000
  • 销售网站设计中国室内设计装饰协会
  • 做动态h5的网站上海网页制作报价
  • 做线上兼职的网站室内设计培训价格
  • 网站开发中的paml关于网站建设的申请
  • 厦门电信网站备案兰州城建设计院网站
  • 建设规划展览馆网站的优势绍兴网站开发08keji
  • 哪个网站做高仿衣服西安 网站搭建
  • 网站开发中用到的英文单词团购网站开发与设计
  • 网站开发设计有哪些上饶市住房和城乡建设局网站
  • 凡科做网站视频海南海口网站开发公司
  • 北京产品网站设计哪家专业wordpress wp content
  • 用自己电脑建设网站今科网站建设
  • 网站建设信息表营销型网站建设论文
  • 宿州网站开发建设打网站显示域名解析错误
  • 网站设计制作说明做娱乐网站被坑
  • 免费html网页模板素材网站抖音代运营都做什么
  • 企业网站如何建设报告陕西网站建设设计公司
  • 黑龙江省城乡和建设厅网站首页网站制作镇江
  • 单页网站建设哪个品牌好北仑网站网页建设