场景描述:

场景描述:一个接口(IPerson)有很多个的字段,可能有几百。而且这些字段都是必须的。
我们需要使用这个接口,但是我又不可能使用它的全部。可能只会使用几个。
我还必须要使用这接口。这个时候,我们怎么解决这个问题呢?
TS给了我们一个工具类Partial,可以解决这隔办法
Partial [ pɑ rʃl ] [部分的]
使用的方式就是 let obj:Partial<接口名>={ }

工具类的使用 Partial

// 这个接口有这些的字段
interface IPerson {
name: string;
age: number;
sex: "男" | "女"; //只能够是男或者女,
address: string,
xueli: string,
like: string[],
height: string,
weight:number,
// 可能这个接口还有很多字段
} // 现在我要使用IPerson这个接口去声明name, age, sex。
// 我们就可以使用工具类 Partial。Partial表示我只使用接口中的部分声明
let zhang: Partial<IPerson> = {
name: '张三',
age: 10,
sex: '女'
}

Partial 是怎么做的

我们将光标放在 Partial 上可以看见这样的描述
type Partial<T> = { [P in keyof T]?: T[P] | undefined; }
什么意思呢? 我们知道<T>是一个接口。
[P in keyof T] 中的T其实就是 IPerson 这个接口
简单点就是翻译成了下面这样的样子
{
name ?: string | undefined,
age ?: number | undefined
sex ?: "男" | "女" | undefined
这样的形式下去
}
通过 Partial 【怕 show儿】声明后就不会报错。达到使用接口的部分声明

场景描述

interface IInfoPerson {
name: string;
age: number;
address?: string,
like?: string[],
}
我们之前声明了一个接口。其中有几个字段是可选的(address,like )。
现在我们恰好需要使用这个接口,不过有几个的可选字段要变为必须字段。
我们怎么解决这个问题呢?
1.重新声明一个接口。可以解决,但是这样不好。
2.不用管它。我们心里在使用的时候知道这几个可选的字段是必须字段
3.使用 Required 读音[rɪ ˈkwaɪ ə d ]

工具类 Required的简单使用

// 有两个可选字段
interface IInfoPerson {
name: string;
age: number;
address?: string,
like?: string[],
} // 通过 Required 将可选字段变为必须字段
let lisi: Required<IInfoPerson> = {
name: '李四',
age: 10,
address: '在罗翔老师的视频中',
like:['吃饭','睡觉']
} // 通过 Required 将可选字段变为必须字段 【这个会报错】
let zhang: Required<IInfoPerson> = {
name: '张三',
age: 10,
}

Required是怎么做的?

光标放在 Required 上会出现下面的提示内容
type Required<T> = { [P in keyof T]-?: T[P]; }
这里的 -? 就是抵消掉问号 ?
这就变成了
{
name: string;
age: number;
address: string,
like: string[],
}
这样就不可以缺省了

TypeScript工具类 Partial 和 Required 的详细讲解的更多相关文章

  1. JDK中工具类的使用

    JDK中内置了很多常用的工具类,且多以“s”结尾,如:集合工具类Collections,数组工具类Arrays,对象工具类Objects,文件工具类Files,路径工具类Paths,数学工具类Math ...

  2. Android自定义工具类获取按钮并绑定事件(利用暴力反射和注解)

    Android中为按钮绑定事件的有几种常见方式,你可以在布局文件中为按钮设置id,然后在MainActivity中通过findViewById方法获取按钮对象实例,再通过setOnClickListe ...

  3. Java中Arrays数组工具类的使用全解

    本文几乎涵盖了所有的Arrays工具类(基于Java 11)的方法以及使用用例,一站式带你了解Arrays类的用法,希望对大家有帮助. 码字不易,三连支持一下吧 Arrays数组工具类 方法一览表 快 ...

  4. Map集合、HashMap集合、LinkedHashMap集合、Hashtable集合、Collections工具类和模拟斗地主洗牌和发牌

    1.Map集合概述和特点 * A:Map接口概述  * 查看API可以知道:          * 将键映射到值的对象          * 一个映射不能包含重复的键          * 每个键最多 ...

  5. Collections工具类、Map集合、HashMap、Hashtable(十八)

    1.Map集合概述和特点 * A:Map接口概述 * 去重复, * 查看API可以知道, * 将键映射到值的对象, * 一个映射不能包含重复的键, * 每个键最多只能映射到一个值.* B:Map接口和 ...

  6. 超详细的Java时间工具类

    package com.td.util; import java.sql.Timestamp; import java.text.ParseException; import java.text.Pa ...

  7. Java集合 Map 集合 与 操作集合的工具类: Collections 的详细说明

    Java集合 Map 集合 与 操作集合的工具类: Collections 的详细说明 每博一文案 别把人生,输给心情 师父说:心情不是人生的全部,却能左右人生的全部. 你有没有体会到,当你心情好的时 ...

  8. [转]java中JSONObject与JSONArray的使用详细说明及有关JSON的工具类

    JSONObject与JSONArray的使用 一.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: 1.commons-lang.jar 2.c ...

  9. Android开发之SDCardUtils工具类。java工具详细代码,附源代码。判断SD卡是否挂载等功能

    package com.xiaobing.zhbj.utils; import java.io.BufferedInputStream; import java.io.BufferedOutputSt ...

  10. MD5加密,java String 转变成MD5 String 详细代码,工具类Android开发必备

    /** * MD5加码.32位 * @param inStr * @return */ public static String MD5(String inStr) { MessageDigest m ...

随机推荐

  1. 火山引擎 EMR StarRocks 场景案例分享

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 日前 ,火山引擎数智平台(VeDI)旗下产品 E-MapReduce(简称"EMR")正式上线 ...

  2. PPT 工作需求:如何利用PPT做活动海报&H5?

    PPT 工作需求:如何利用PPT做活动海报? 图片素材 + 字体 + 封面排版 PPT 工作需求:如何利用PPT制作H5? https://www.maka.im/muban http://www.p ...

  3. Kubernetes(K8S) Deployment 升级和回滚

    创建部署详见 Kubernetes(K8S) Deployment 部署 Pod 传统应用升级,一般是V1.0的jar包,有一个应对 1.0 的 shell 启动脚本.升级时,传 2.0 的 jar包 ...

  4. PS 独立集中标识下修改项目采购类型增强

    1.当物料独立集中标识为2,采购类型通过BAPI:BAPI_NETWORK_COMP_ADD,type_of_pur_resv传入'7',则报错"组件分配并不是未销售订单或项目库存而设的&q ...

  5. Spark Final-Examination Note

    重点 4567,Special 4,5 3道编程题,分值 35(基本书上,不超纲) 选填各 20分,简答 5 题/25分,编程题 3题/35分. 简答题参考每章课后习题 第 1 章简答题 1. 请阐述 ...

  6. 【每日一题】33. 简单瞎搞题 (滚动数组 + bitset 优化DP)

    补题链接:Here 这个问题的难点在于如何统计出所有和可能出现的情况,并且不能重复. 很容易想到用桶去存储每一个数,即某个和能够组合出来则为1,否则为0 不妨令 \(dp[i][j]\) 表示为第 \ ...

  7. HashMap非线程安全到底有什么问题

    HashMap是Java中常用的数据结构,用于存储键值对,并且提供了快速的查找和插入操作.下面挖掘一下HashMap内部的架构设计思维: 哈希函数的设计: HashMap使用哈希函数将键映射到数组索引 ...

  8. 聚焦 AIGC,函数计算为 AI 应用插上腾飞翅膀

    6月1日,2023 阿里云峰会·粤港澳大湾区在广州举办,Serverless 加速创新分论坛如约亮相,阿里云函数计算 FC 聚焦 AIGC 应用开发,GPU 性能体验再升级,让 AIGC 应用开发更简 ...

  9. 【调试】sysRq按键使用方法

    SysRq键简介 SysRq键是一个魔术案件,只要在内核没有完全卡死的情况下,内核都会相应SysRq 键的输入,使用这些组合键都可以搜集包括系统内存使用.CPU任务处理.进程运行状态等系统运行信息. ...

  10. echarts常见问题及解决方法

    https://blog.csdn.net/weixin_46928381/article/details/122875609