iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >TypeScript工具类Partial和Required的场景分析
  • 418
分享到

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

2024-04-02 19:04:59 418人浏览 独家记忆
摘要

目录场景描述:工具类的使用 PartialPartial 是怎么做的场景描述工具类 Required的简单使用Required是怎么做的?场景描述: 场景描述:一个接口(IPerso

场景描述:

场景描述:一个接口(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工具类内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: TypeScript工具类Partial和Required的场景分析

本文链接: https://www.lsjlt.com/news/168574.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • TypeScript工具类Partial和Required的场景分析
    目录场景描述:工具类的使用 PartialPartial 是怎么做的场景描述工具类 Required的简单使用Required是怎么做的?场景描述: 场景描述:一个接口(IPerso...
    99+
    2024-04-02
  • python3QT5端口转发工具两种场景分析
    功能是打开本机端口,映射到指定IP的端口 场景1本机:tomcat启动8080,通过本端口工具打开80,指向到tomcat的8080。请求本机80可以不加端口 场景2远端:访问本机8...
    99+
    2024-04-02
  • 微服务SpringBoot整合Jasypt加密工具的场景分析
    目录一、Jasypt介绍二、Jasypt手动使用2.1 密码加密场景2.2 文本加密场景2.3 数值加密场景2.4 二进制数据加密场景三、Jasypt整合SpringBoot四、生成...
    99+
    2022-11-13
    SpringBoot整合Jasypt Jasypt加密工具 Java加密工具包
  • JVM类加载场景的实例分析
    JVM类加载场景的实例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JVM是Java Virtual  Machine(Java虚拟机)的缩写,J...
    99+
    2023-06-16
  • PHP 函数的分类和应用场景
    php 函数可按用途分类:核心函数执行基本任务;用户定义函数扩展功能;扩展函数添加特定任务功能。实战中,可利用 php 函数高效处理数据,如获取用户姓名、查找最大年龄、按城市分组用户等。...
    99+
    2024-04-13
    php 函数分类 mysql
  • Java工具类DateUtils的示例分析
    这篇文章主要介绍了Java工具类DateUtils的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下import java.text.ParseE...
    99+
    2023-05-30
    java dateutils
  • redis的五大数据类型应用场景分析
    目录1、对象的类型与编码2、字符串对象3、列表对象4、哈希对象5、集合对象6、有序集合对象7、五大数据类型的应用场景1、对象的类型与编码   Redis使用前面说的五大数据类型来表示...
    99+
    2024-04-02
  • Netty分布式高性能工具类FastThreadLocal和Recycler分析
    目录概述第一节:FastThreadLocal的使用和创建首先我们看一个最简单的demo跟到nextVariableIndex方法中我们首先剖析slowGet()方法我们跟进fast...
    99+
    2024-04-02
  • Go语言的优势和适用场景分析
    Go语言的优势和适用场景分析 Go语言是一种由Google开发的开源编程语言,它的设计目标是提高编程效率、代码可维护性和性能。随着云计算和大数据时代的到来,Go语言逐渐成为了程序员们的...
    99+
    2024-04-02
  • ​Openresty中RBAC、sql和redis模块工具类的示例分析
    这篇文章主要介绍了Openresty中RBAC、sql和redis模块工具类的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。RBAC介绍RBAC(Role-Based...
    99+
    2023-06-19
  • spring boot 动态生成接口实现类的场景分析
    目录一:定义注解二:建立动态代理类三:注入spring容器四:编写拦截器五:新建测试类在某些业务场景中,我们只需要业务代码中定义相应的接口或者相应的注解,并不需要实现对应的逻辑。 比...
    99+
    2024-04-02
  • C++线程间的互斥和通信场景分析
    目录互斥锁(mutex)模拟车站卖票不加锁的结果加锁后的结果简单总结条件变量(conditon_variable)生产者消费者线程模型产生问题解决问题原子类型(atomic)简单使用...
    99+
    2024-04-02
  • Go语言泛型的应用场景和案例分析
    Go语言自从发布以来一直以其简洁、高效和并发性能而备受开发者青睐。然而,长期以来一直受到开发者们诟病的一点就是缺乏泛型支持。在2021年的Go语言1.18版本中,泛型正式成为了标准特性...
    99+
    2024-03-10
    go泛型应用 场景案例分析 泛型实践探究 go语言
  • Linux开发工具和Windows开发工具对比的示例分析
    这篇文章给大家分享的是有关Linux开发工具和Windows开发工具对比的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux开发工具就C++开发工具而言,与Windows下微软(VC, VS2005...
    99+
    2023-06-16
  • Django在Java开发中的应用场景和优势分析?
    Django是一种基于Python语言的Web框架,它被广泛应用于各种类型的Web应用程序开发中。然而,很少有人知道Django也可以应用于Java开发中。在本文中,我们将探讨Django在Java开发中的应用场景和优势。 一、Django...
    99+
    2023-06-15
    http django 容器
  • Java基础之颜色工具类的示例分析
    这篇文章主要介绍Java基础之颜色工具类的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于Java的实现了Web MVC设计...
    99+
    2023-06-14
  • SpringBoot整合Redis及Redis工具类的实例分析
    SpringBoot整合Redis及Redis工具类的实例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。SpringBoot整合Redis的博客很多,但是很多都不是我想...
    99+
    2023-06-22
  • InnoDB主键索引树和二级索引树的场景分析
    我们这里讨论InnoDB存储引擎,数据和索引存储在同一个文件student.ibd 场景1:主键索引树 uid是主键,其他字段没有添加任何索引 select * fro...
    99+
    2024-04-02
  • redis五大数据结构和使用场景的示例分析
    这篇文章主要介绍redis五大数据结构和使用场景的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!老规矩,先抛结论后验证string:有点像java的hashMap,存的时候什么key,取的时候也什么key,常...
    99+
    2023-06-14
  • Linux日志分析的最佳工具:Python和numpy。
    Linux日志分析的最佳工具:Python和numpy 在现代科技时代,数据是无处不在的。随着数据的不断增长和复杂性的提高,分析数据的能力变得越来越重要。对于Linux服务器系统管理员来说,日志是非常重要的数据资源,需要对其进行分析以检测问...
    99+
    2023-08-10
    numpy 日志 linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作