TypeScript 泛型工具类型

news2024/10/6 8:24:09

文章目录

  • 前言
  • Partial(可选)
    • 代码解读
  • Readonly
    • 代码解读
  • Pick
    • 代码解读
  • Record
    • 代码解读
  • ---
  • 上面是常用的,下面是不常用的,需要的话往下看 ( 进阶 )
  • ---
    • Required<T>:Required与Partial相反,作用是将所有属性变成必选属性,用到的原理就是 '-?' 符号
    • Exclude<T, U>表示从T中排除U类型或类型集合
    • Omit<T, K>的含义是从T对象类型中删除K
    • NonNullable<T>一般用来从类型T中排除空类型,即判断是否存在null或undefined,如果不是则返回原类型
    • ReturnType<T>是用来获取函数的返回值类型,其中T表示函数类型

前言

TypeScript 泛型工具类型在实际项目中的应用
在TS中内置了一些常用的工具类型, 用来简化我们TS中的一些常见操作 这些泛型工具类型都是基于泛型实现的, 并且是内置的, 我们也可以直接在代码中使用

Partial(可选)

Partial(可选) 使用Partial<T>来构造或者创建一个类型, 将T的所有属性都设置为可选的

在这里插入图片描述

代码解读

interface Props {
  id: number;
  children: number[];
}




type partialProps = Partial<Props>;
// Partial(可选) 使用Partial<T>来构造或者创建一个类型, 将T的所有属性都设置为可选的

let obj: Props = {
  id: 10,
  children: [1],
};

let obj2: partialProps = {
  id: 10,
};

// 通过上面的实例, 我们可以发现, partialProps中的id和children就变成可选的了
// 但是生成的类型别名, 并不影响Props接口, 他只是创建了一个新的类型
let obj3: partialProps = {};


Readonly

Readonly<Props>是用来构造一个类型, 将Props中的所有属性全部变成只读的

在这里插入图片描述

代码解读

interface Props {
  id: number;
  children: number[];
}

// Readonly Readonly<Props>是用来构造一个类型, 将Props中的所有属性全部变成只读的
type readonlyProps = Readonly<Props>;
let readonlyObj: readonlyProps = {
  id: 10,
  children: [1],
};
readonlyObj.id = 2;

Pick

Pick<T, K>是从T中选择一组属性来构造新类型
Pick工具类型有两个类型变量: 第一个表示选择谁的属性, 第二个选择哪几个类型

在这里插入图片描述

代码解读

interface Props {
  id: number;
  name:string;
  children: number[];
}



// Pick  Pick<T, K>是从T中选择一组属性来构造新类型

// Pick工具类型有两个类型变量: 第一个表示选择谁的属性, 第二个选择哪几个类型
type pickProps = Pick<Props, 'id' | 'children'>;
let pickObj: pickProps = {
  id: 10,
  children: [1],
};


Record

Record<K,T>构造一个对象类型, 属性键为K, 属性类型为T
Record工具类型有两个类型变量, 第一个表示对象有哪些属性, 第二个表示对象属性的类型

在这里插入图片描述

代码解读

interface Props {
  id: number;
  children: number[];
}


// Record  Record<K,T>构造一个对象类型, 属性键为K, 属性类型为T

// Record工具类型有两个类型变量, 第一个表示对象有哪些属性, 第二个表示对象属性的类型
type recordProps = Record<'a' | 'b', number | number[]>;
let recordObj: recordProps = {
  a: [1],
  b: 10,
};

// 我们解读一下上面使用的Record
// 首先我们创建的obj对象有两个属性, 分别是a和b, 属性值要求是字符串数组string[]或者数字类型

上面是常用的,下面是不常用的,需要的话往下看 ( 进阶 )

Required:Required与Partial相反,作用是将所有属性变成必选属性,用到的原理就是 ‘-?’ 符号

Exclude<T, U>表示从T中排除U类型或类型集合

Omit<T, K>的含义是从T对象类型中删除K

NonNullable一般用来从类型T中排除空类型,即判断是否存在null或undefined,如果不是则返回原类型

ReturnType是用来获取函数的返回值类型,其中T表示函数类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1573676.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

路径规划——曲线拟合详解(二):贝塞尔曲线、B样条曲线与QP优化( Fast-Planner算法核心部分)

1. 贝塞尔曲线 (1). 贝塞尔曲线的作用 贝塞尔曲线的作用是给定控制点&#xff0c;通过控制点生成对应的曲线进行轨迹拟合&#xff0c;输入为点&#xff0c;输出为受到控制点约束而产生的轨迹。 (2). 贝塞尔曲线的数学表达式 假设给定N个控制点&#xff0c;得到的为N-1阶的贝…

GA-SVM,基于GA遗传算法优化SVM支持向量机回归预测(多输入单输出)

基于遗传算法&#xff08;Genetic Algorithm, GA&#xff09;优化支持向量机&#xff08;Support Vector Machine, SVM&#xff09;用于回归预测是一个常见的任务。在这个任务中&#xff0c;我们使用GA来寻找SVM的最佳超参数配置&#xff0c;以最大化回归性能指标&#xff0c;例…

PyCharm使用指南(个性化设置、开发必备插件、常用快捷键)

&#x1f947;作者简介&#xff1a;CSDN内容合伙人、新星计划第三季Python赛道Top1 &#x1f525;本文已收录于Python系列专栏&#xff1a; 零基础学Python &#x1f4ac;订阅专栏后可私信博主进入Python学习交流群&#xff0c;进群可领取Python视频教程以及Python相关电子书合…

【Ambari】Ansible自动化部署大数据集群

目录 一&#xff0e;版本说明和介绍信息 1.1 大数据组件版本 1.2 Apache Components 1.3 Databases支持版本 二&#xff0e;安装包上传和说明 三&#xff0e;服务器基础环境配置 3.1global配置修改 3.2主机名映射配置 3.3免密用户名密码配置 3.4 ansible安装 四. 安…

虚幻引擎像素流源码解读

前言 假期在家把虚幻引擎像素流的源码有研究了一下&#xff0c;进行了一下总结&#xff0c;本文适合有一定使用虚幻引擎像素流经验的人阅读。 源码地址 这里研究的是UE5.1的版本&#xff0c;源码位置如下 C:\Program Files\Epic Games\UE_5.1\Engine\Plugins\Media\PixelStream…

AIGC实战——ProGAN(Progressive Growing Generative Adversarial Network)

AIGC实战——ProGAN 0. 前言1. ProGAN2. 渐进式训练3. 其他技术3.1 小批标准差3.2 均等学习率3.3 逐像素归一化 4. 图像生成小结系列链接 0. 前言 我们已经学习了使用生成对抗网络 (Generative Adversarial Network, GAN) 解决各种图像生成任务。GAN 的模型架构和训练过程具有…

pytest的时候输出一个F后面跟很多绿色的点解读

使用pytest来测试pyramid和kotti项目&#xff0c;在kotti项目测试的时候&#xff0c;输出一个F后面跟很多绿色的点&#xff0c;是什么意思呢&#xff1f; 原来在使用pytest进行测试时&#xff0c;输出中的“F”代表一个失败的测试&#xff08;Failed&#xff09;&#xff0c;而…

Spring源码分析(@Configuration)

文章目录 Spring源码分析&#xff08;Configuration&#xff09;一、ConfigurationClassPostProcessor1、主要作用和特点2、执行的时机3、BeanFactoryPostProcessor4、BeanDefinitionRegistryPostProcessor5、ConfigurationClassPostProcessor1&#xff09;postProcessBeanDefi…

ebpf+perfetto实现调度延迟记录与展示

1.背景 需要分析生产环境的调度问题,如线程的调度延迟有多少,在哪些时间点延迟比较明显,影响其调度的主要原因是什么?其次,我们希望可以比较直观的展示调度延迟情况。最好能对接perfetto的UI和后处理,因为perfetto已经用于分析比较多的性能数据,可以和调度数据进行整合.我们…

聚观早报 | 沃尔沃发布一季度全球销量;苹果将举办财报电话会议

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 4月07日消息 沃尔沃发布一季度全球销量 苹果将举办新财报电话会议 荣耀Magic6支持5.5G通信 特斯拉将建最大超级充…

【计算机网络经典面试题】简述 TCP 三次握手和四次挥手的过程

TCP链接 1.三次挥手2.四次挥手3.拓展说说 TCP 2次握手行不行&#xff1f;为什么要3次 1.三次挥手 1&#xff09;第一次握手&#xff1a;建立连接时&#xff0c;客户端向服务器发送SYN包&#xff08;seqx&#xff09;&#xff0c;请求建立连接&#xff0c;等待确认 2&#xff09…

基于Springboot的Java学习平台

采用技术 基于Springbootjava学习平台的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 系统功能模块 后台管理 用户注册 课程信息 作业信息 资料信息…

【Linux实践室】Linux高级用户管理实战指南:创建与删除用户组操作详解

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 &#x1f514;Linux创建用户组命令2.1.1 知识点讲解2.1.2…

MacOS Docker 可视化面板 Portainer

一、简介 Portainer 是一个可视化的容器镜像图形管理工具&#xff0c;使用 Portainer 可以轻松构建、管理和维护Docker 环境。 而且完全免费&#xff08;portainer-ce 是免费的&#xff0c;portainer-ee 是需要授权的&#xff0c;今天安装的是 portainer-ce 版本&#xff09;&…

基于51单片机的尾气检测报警器Proteus仿真

地址&#xff1a;https://pan.baidu.com/s/1DBn8A-p6wmP3Zssrrwspyg 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectroni…

Transformer模型-add norm(残差连接归一化)的简明介绍

今天介绍transformer模型的add & norm&#xff08;残差连接&归一化&#xff09; add代表残差连接&#xff08;Residual Connection&#xff09; 残差连接是一种跳过连接,它将输入添加到网络的中间层或输出上。 **残差连接&#xff08;Residual Connection&#xff09;…

深度学习-机器视觉part2

深度学习-机器视觉part2 文章目录 深度学习-机器视觉part2一、从卷积到卷积神经网络二、手撕卷积代码2.1 动机2.2 数据集2.3 卷积操作2.3.1 填充&#xff08;padding&#xff09;2.3.2 卷积块2.3.3 池化2.3.4 Softmax 2.4 完整CNN2.5 训练改进 三、经典CNN模型介绍四、CNN模型的…

SQL Server详细安装使用教程

1.安装环境 现阶段基本不用SQL Server数据库了&#xff0c;看到有这样的分析话题&#xff0c;就把多年前的存货发一下&#xff0c;大家也可以讨论看看&#xff0c;思路上希望还有价值。 SQL Server 2008 R2有32位版本和64位版本&#xff0c;32位版本可以安装在Windows XP及以上…

网络安全之代码签名证书申请

代码签名&#xff0c;作为一种数字安全机制&#xff0c;对于软件开发、分发及用户使用环节具有至关重要的意义。以下从六大方面阐述代码签名必不可少的重要性&#xff1a; 确保代码来源可信&#xff1a; 代码签名如同软件的“身份证”&#xff0c;通过数字证书对开发者身份进…

2024年船舶、海洋工程与应用技术国际学术会议(ICSOEAT 2024)

2024 International Conference on Shipbuilding, Ocean Engineering and Applied Technology ●会议简介 2024年船舶、海洋工程与应用技术国际学术会议&#xff08;ICSOEAT 2024&#xff09;旨在汇聚全球船舶、海洋工程与应用技术领域的专家学者&#xff0c;共同探讨行业前沿…