TypeScript工具类 Partial 和 Required 的场景分析

 更新时间:2022年09月28日 10:04:11   作者:南风晚来晚相识  
这篇文章主要介绍了TypeScript工具类 Partial 和 Required 的详细讲解,本文通过场景描述给大家详细讲解工具类的使用,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下

场景描述:

场景描述:一个接口(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 的详细讲解的文章就介绍到这了,更多相关TypeScript工具类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • javascript之函数进阶详解

    javascript之函数进阶详解

    这篇文章主要为大家介绍了javascript函数进阶,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助<BR>
    2021-12-12
  • JavaScript canvas实现流星特效

    JavaScript canvas实现流星特效

    这篇文章主要为大家详细介绍了JavaScript canvas实现流星特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 重写javascript中window.confirm的行为

    重写javascript中window.confirm的行为

    javascript中window.confirm这个方法很好用,可以弹出一个确认对话框.但有一个问题是,它默认的情况下,将选中那个"确定"按钮,当用户有意无意的在键盘回车,就是说按下Enter键的时候,就会自动返回true。在很多时候其实我们不希望这样
    2012-10-10
  • js检测网络是否具体连接功能的代码

    js检测网络是否具体连接功能的代码

    这篇文章主要介绍了js如何实现检测网络是否具体连接功能 ,需要的朋友可以参考下
    2014-05-05
  • js如何去除数组中的empty undefined空项

    js如何去除数组中的empty undefined空项

    这篇文章主要介绍了js如何去除数组中的empty undefined空项,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Web跨浏览器进程通信(Web跨域)

    Web跨浏览器进程通信(Web跨域)

    Web跨域已是老生常谈的话题,这次来尝试下跨域浏览器进程之间的通信 —— 这在过去基本依靠网络中转实现
    2013-04-04
  • three.js实现炫酷的全景3D重力感应

    three.js实现炫酷的全景3D重力感应

    这篇文章主要为大家详细介绍了three.js实现炫酷的全景3D重力感应,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • layer弹出层的关闭问题详解之在执行完毕后关闭当前弹出层

    layer弹出层的关闭问题详解之在执行完毕后关闭当前弹出层

    在前端页面中用layer打开窗口供用户输入或选择是非常常见的用法,但是有时为了完成一次操作,需要弹出多个窗口进行选择、输入或者提示,因此在关闭窗口的时候需要实现指定关闭任意窗口,需要的朋友可以参考下
    2023-10-10
  • webpack独立打包和缓存处理详解

    webpack独立打包和缓存处理详解

    这篇文章主要介绍了webpack独立打包和缓存处理的相关资料,文中介绍的非常详细,对大家学习webpack具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • 微信公众平台 客服接口发消息的实现代码(Java接口开发)

    微信公众平台 客服接口发消息的实现代码(Java接口开发)

    这篇文章主要介绍了微信公众平台 客服接口发消息的实现代码(Java接口开发),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04

最新评论