操作符infer的作用是什么?

在 TypeScript 中,infer 关键字用于推断类型变量。它通常与条件类型(Conditional Types)一起使用,用于从条件类型中提取并推断出类型。

条件类型是一种非常强大的类型操作工具,可以根据给定的条件选择不同的类型。而 infer 关键字允许我们在条件类型中引入新的类型变量,并对其进行推断。

以下是一个示例来说明 infer 的作用:

type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;

在这个示例中,我们定义了一个条件类型 ReturnType,它接受一个函数类型 T 作为输入参数。通过 T extends (...args: any[]) => infer R 这一条件判断,我们在条件类型中引入了一个新的类型变量 R,并使用 infer 关键字进行推断。

T extends (...args: any[]) => infer R 表示如果 T 是一个函数类型,那么就将其返回值类型推断为 R 类型。否则,返回 any 类型作为默认类型。

通过这个条件类型,我们可以实现一个工具类型,用于获取函数的返回值类型:

function sum(a: number, b: number): number {return a + b;
}type Result = ReturnType<typeof sum>; // number

在这个例子中,我们使用 ReturnType<typeof sum> 来获取函数 sum 的返回值类型。由于 sum 是一个函数类型,因此 ReturnType 条件类型中的 infer R 将会推断为 number 类型,最终得到 Result 类型为 number

总之,infer 关键字在 TypeScript 的条件类型中扮演着重要的角色,用于推断类型变量,并根据推断结果进行类型操作和转换。它使得我们可以编写更加灵活和可复用的类型工具。

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

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

相关文章

x-cmd pkg | yt-dlp - 专注于 YouTube 的下载工具

目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 yt-dlp 是一款强大的命令行下载工具&#xff0c;专注于下载 YouTube 视频和音频。它是 youtube-dl 的一个改进和拓展版本&#xff0c;提供了更多功能和修复了一些问题。 yt-dlp 具有灵活的支持&#xff0c;可下载 Yo…

武汉灰京文化:手游市场游戏体验和社交互动的新趋势

随着移动设备的普及和技术的不断提高&#xff0c;手游市场正在迎来全新的发展时期。用户的游戏习惯正在发生重大变化&#xff0c;他们越来越倾向于随时随地玩游戏。手游的便携性使得用户可以在公交车上、休息时间或等待朋友时轻松进行游戏。这种随时随地的游戏体验满足了现代生…

static 关键字的用法

1.static关键字修饰的(静态方法) 使用static关键字修饰的方法的调用方式 调用方式1:如果是在当前类的static方法中&#xff0c;则直接调用 调用方式2:如果是在其他类的static方法中&#xff0c;则需要通过类名.方法()调用 备注1:普通方法(没有使用staitc关键字修饰的方法)允许调…

裸辞后的焦虑与挑战:如何成功跨行业找到满意工作?

裸辞后的焦虑 在最近一个平常的晚上&#xff0c;我吃完饭后像往常一样坐在沙发上休息。突然&#xff0c;电话铃声响起&#xff0c;是来自久未联系的姐夫。寒暄过后&#xff0c;他透露出他的焦虑&#xff1a;外甥女小桦自从四五个月前辞职后&#xff0c;至今还没有找到新的工作…

【成本价特惠】招募证书代理:工信部、PMP、阿里云、华为等认证,机会难得!

扫码和我联系 亲爱的读者朋友们&#xff0c; 今天&#xff0c;我想和大家分享一个难得的机会。我们目前正在积极招募各类证书的代理&#xff0c;包括工信部的证书、PMP&#xff08;项目管理专业人士&#xff09;证书、阿里云证书、华为证书、OCP 证书、CFA 证书等。这些证书在…

最大流—EK算法,流网络,残留网络,定理证明,详细代码

文章目录 零、卡车运输一、流网络1.1流网络1.2流1.3最大流1.4残留网络1.5增广路径1.6流网络的割1.7最大流最小割定理1.7.1证明 1.8Ford-Fulkerson方法 二、Edmonds-Karp算法2.1定义2.2EK算法的实现2.3EK算法详细代码2.4OJ练习 零、卡车运输 Lucky Puck公司有冰球工厂Vancouver…

Unity导出Android项目踩坑记录

导出的时候需要注意以下地方的配置&#xff1a; 1、buildSetting-> 设置ExportProject 2、buildsetting ->playerSetting ->设置IL2CPP 3、设置ndk edit->preferences->external tools->ndk 如果unity的ndk版本和android项目里的ndk版本不一致会报错&…

【Qt开发】初识Qt

文章目录 1. Qt的背景1.1 Qt是什么1.2 Qt的发展史1.3 Qt支持的平台 2. Qt开发环境的搭建2.1 Qt SDK下载2.2 Qt SDK的安装 3. 一个简单的Qt模板程序的创建4. Qt模板程序的代码讲解4.1 main.cpp4.2 widget.h4.3 widget.cpp4.4 widget.ui4.5 test_1_18.pro4.6 一些中间文件 5. Qt在…

keil软件仿真

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要…

ubuntu opencv 编译contrib库

OpenCV4.6.0 注意opencv的版本和opencv_contrib的版本需要一致&#xff0c;反正我编译opencv-4.6.0和opencv_contrib_4.x不成功。 提前安装GTK库&#xff0c;不然不能用imshow这些显示的功能。 sudo apt install libgtk2.0-dev # git clone https://github.com/opencv/opencv…

vue基于Spring Boot框架的甘肃敦煌文化旅游管理系统

本敦煌文化旅游管理系统是为了提高用户查阅信息的效率和管理人员管理信息的工作效率&#xff0c;可以快速存储大量数据&#xff0c;还有信息检索功能&#xff0c;这大大的满足了用户和管理员这两者的需求。操作简单易懂&#xff0c;合理分析各个模块的功能&#xff0c;尽可能优…

MySQL的数据类型

整数类型&#xff08;Integer Types&#xff09;&#xff1a; TINYINT: 1字节&#xff0c;范围从-128到127或0到255&#xff08;无符号&#xff09;。 SMALLINT: 2字节&#xff0c;范围从-32,768到32,767或0到65,535&#xff08;无符号&#xff09;。 MEDIUMINT: 3字节&#xf…

(蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)

能够表示为某个整数的平方的数字称为“平方数 虽然无法立即说出某个数是平方数&#xff0c;但经常可以断定某个数不是平方数。因为平方数的末位只可能是:0,1,4,5,6,9 这 6 个数字中的某个。所以&#xff0c;4325435332 必然不是平方数。 如果给你一个 2 位或 2 位以上的数字&am…

六、标准对话框、多应用窗体

一、标准对话框 Qt提供了一些常用的标准对话框&#xff0c;如打开文件对话框、选择颜色对话框、信息提示和确认选择对话框、标准输入对话框等。1、预定义标准对话框 &#xff08;1&#xff09;QFileDialog 文件对话框 QString getOpenFileName() 打开一个文件QstringList ge…

You need to add dependency of ‘poi-ooxml‘ to your project, and version >= 4.1.2

原因 由于在依赖中引用了多个版本的 hutool,导致在最终打包时使用的版本不是由在开发时所引用的版本 cn.hutool.core.exceptions.DependencyException: You need to add dependency of poi-ooxml to your project, and version > 4.1.2at cn.hutool.poi.excel.ExcelUtil.get…

MyBatis-Plus 日常操作

本文主要介绍 mybatis-plus 日常操作。 一、快速开始 本文基于 springboot、maven、jdk1.8、mysql 环境。 新建如下数据库&#xff1a; 建议大家选择 utf8mb4 这种字符集&#xff0c;做过微信的同学应该会知道&#xff0c;微信用户名称的表情&#xff0c;是需要这种字符集才…

基于python旅游推荐系统 协同过滤算法 爬虫 Echarts可视化 Django框架(源码)✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

Android14之DefaultKeyedVector实现(一百八十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

计算机组成原理 第一弹

ps&#xff1a;本文章的图片来源都是来自于湖科大教书匠高老师的视频&#xff0c;声明&#xff1a;仅供自己复习&#xff0c;里面加上了自己的理解 这里附上视频链接地址&#xff1a;1-2 计算机的发展_哔哩哔哩_bilibili ​​ 目录 &#x1f680;计算机系统 &#x1f680;计…

基于SpringBoot的欢乐校园管理系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…