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

海宁市网站建设/网络营销和直播电商专业学什么

海宁市网站建设,网络营销和直播电商专业学什么,wordpress退出维护模式,自驾游自由行网站建设Partial<T>:快速把某个接口类型中定义的属性变成可选 Partial 是 TS 中的一个工具类型(Utility Type),它的作用只有一个:将一个对象类型中的所有属性变为可选属性。换句话说,Partia…

Partial<T>:快速把某个接口类型中定义的属性变成可选

Partial 是 TS 中的一个工具类型(Utility Type),它的作用只有一个:将一个对象类型中的所有属性变为可选属性。换句话说,Partial<T> 接受一个泛型参数 T,并返回一个新的类型,新类型与 T 相同,但是 T 类型中的所有属性都变为可选属性。

type User = {id: number;name: string;age: number;
}
type UpdatedPerson = Partial<User>;

得到的 UpdatedPerson 类型与下面的类型定义是相同的:

type UpdatedPerson = {id?: number;name?: string;age?: number;
}

参考:TS 关于泛类约束partial<T>_ts partial_moannian的博客-CSDN博客

原来Partial这么神!TS中的对象可选属性解决方案_ts中的partial_滕青山ᅠ的博客-CSDN博客

// Partial 源码分析
/*** Make all properties in T optional*/
type Partial<T> = {[P in keyof T]?: T[P];
};

这段源码使用关键字 in 和操作符 keyof 定义了一个映射类型。

  • keyof 是 TS 中的索引类型查询操作符,用于获取一个对象类型的所有属性名称的联合类型。
interface User {name: string;age: number;gender: string;
}type UnionType = keyof User;

User 是一个对象类型,keyof 会获取 User 对象类型的属性名称联合类型,也就是 "name" | "age" | "gender"。UnionType 的类型与下面的类型定义是等价的:

type UnionType = "name" | "age" | "gender";

要注意的是,keyof 操作符只能用于对象类型。除对象类型外的其他类型,keyof 是无法使用的。例如:

type MyNumber = number;
type MyNumberKey = keyof MyNumber; // 编译错误:Type 'number' has no matching index signature for type 'keyof number'
  • 再来看源码中的 in 关键字,这个关键字的作用是用于映射类型的。在这里 in 表示的是迭代联合类型中的每个属性,而泛型 P 就表示这些属性。

这样,Partial 类型中的成员就与传入的泛型 T 中的成员一致了。属性名称后的 ? 表示可选类型,属性值则是取的泛型 T 中的属性值。由此,便将泛型 T 中的属性转变成了可选属性。

Required<T>:把所有可选属性变成必选属性

interface Person {name: string;age: number;sex?: string;
}
/**
* type PersonOptions = {
*   name: string;
*   age: number;
*   sex: string;
* }
*/
type PersonRequired = Required<Person>;// 实现原理
type Required<T> = {[P in keyof T]-?: T[P] // `-?` 符号是一个操作符,用于将属性变为必需的,即必须存在并且不能为 undefined 或 null。
}

Readonly<T>

// 实现原理
/*** Make all properties in T readonly*/
type Readonly<T> = {readonly [P in keyof T]: T[P];
};

http://www.jmfq.cn/news/4790323.html

相关文章:

  • 蒙古文门户网站建设督导/seo销售话术开场白
  • 青海企业网站建设开发/网站开发的一般流程
  • 做网站前台用什么/常熟网站建设
  • 文化类网站是不是休闲娱乐类网站/天津关键词优化网排名
  • 中咨城建设计南京网站/百度后台推广登录
  • wordpress 查看大图/对网站的建议和优化
  • 成都倒闭的网站建设公司名单/重庆森林电影简介
  • 垃圾桶东莞网站建设/网络营销电子版教材
  • 无锡手机网站制作/b2b平台
  • 做抽奖网站合法吗/百度 seo排名查询
  • 手动搭建wordpress/杭州seo平台
  • 佛山自定义网站建设/产品推广方案模板
  • 网站制作 杭州/优化大师官网
  • steam课程做网站/公司网站制作
  • wordpress模板 户外钓鱼类网站/优化设计电子课本
  • .net微信网站开发/外贸seo软件
  • wordpress建的网站如何跟微信集成/网站建设规划要点详解
  • 能播放优酷视频的网站怎样做/竞价推广托管公司价格
  • php按步骤做网站/外贸订单怎样去寻找
  • 网站h1/国外免费发产品的b2b平台
  • 网站开发技术课程设计总结/西安网站建设网络推广
  • 长春建站最新消息/广告推广平台赚取佣金
  • 公众号涨粉平台/广州百度seo 网站推广
  • 苏州中设建设集团有限公司网站/新疆头条今日头条新闻
  • 网站建设的主要工作流程/企业内训课程
  • 政务信息网站建设工作方案/网络广告推广
  • 老网站怎么优化/百度搜索广告投放
  • 北京企业官网网站建设哪家好/网络工程师培训班要多少钱
  • 有没有专门做字体排版设的网站/苏州百度推广代理商
  • 做网站需要的知识/网站快速排名公司