当前位置: 首页 > news >正文

TypeScript 从入门到进阶之基础篇(三) 元组类型篇

在这里插入图片描述

系列文章目录

TypeScript 从入门到进阶系列

  1. TypeScript 从入门到进阶之基础篇(一) ts基础类型篇
  2. TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇
  3. TypeScript 从入门到进阶之基础篇(三) 元组类型篇
  4. TypeScript 从入门到进阶之基础篇(四) symbol类型篇
    持续更新中…

文章目录

  • 系列文章目录
  • TypeScript 从入门到进阶系列
  • 前言
  • 一、在TypeScript中使用元组
  • 二、TypeScript 中元组的使用场景
    • 1、让函数返回多个值:
    • 2. 处理具有固定数量和类型的数据:
    • 3. 作为函数参数的类型注解:
  • 三、 使用元组的异常情况
    • 1、元组长度不匹配:
    • 2、越界访问:
    • 3. 类型不匹配:


前言

在前面 我们学习了 在TypeScript 中如何使用、定义基础类型以及 TypeScript 中 引用类型的使用、定义,本章我们来讲解一个TypeScript 中独有的 元组 类型

在TypeScript中,元组类型是一种特殊的数组类型,它允许你在一个数组中存储多个不同类型的元素。元组类型使用固定的序列来定义每个元素的类型,并且元素的数量是有限的。
*注意:元组就是数组的变种是固定数量的不同类型的元素的组合

一、在TypeScript中使用元组

在TypeScript中使用元组,其实和数组的定义差不多,但和数组不同的是元组的数量是固定的,元组的好处在于可以把多个元素作为一个单元传递

//元组的定义 和数组差不多是吧 但是区别是每一项的类型可以不同,数量是固定的 且不能有数组的一些操作
let arr1:[string,number]=['我是元组中的一项'1]//错误使用例子1
arr1.push('其实我添加不了')
arr1.pop()

二、TypeScript 中元组的使用场景

TypeScript中的元组(Tuple)主要用于表示具有固定数量和类型的元素的数组。元组可以在以下场景中使用:

1、让函数返回多个值:

通常情况下,函数只能返回一个值。但是通过使用元组,可以将多个相关的值打包成一个返回值。这在需要一次性返回多个结果的情况下非常有用。

function getUserInfo(): [string, number] {let name: string = "John";let age: number = 30;return [name, age];
}let [name, age] = getUserInfo();
console.log(`Name: ${name}, Age: ${age}`); // 输出:Name: John, Age: 30

2. 处理具有固定数量和类型的数据:

有时需要处理某种特定类型的数据,且元素的数量和类型是固定的。例如,表示一个坐标的二维元组。

let coordinate: [number, number] = [10, 20];
console.log(`X: ${coordinate[0]}, Y: ${coordinate[1]}`); // 输出:X: 10, Y: 20

3. 作为函数参数的类型注解:

可以使用元组作为函数参数的类型注解,确保传入的参数与指定的数量和类型匹配。

function calculateArea(coordinates: [number, number]): number {let [x, y] = coordinates;return x * y;
}let area = calculateArea([10, 20]);
console.log(area); // 输出:200

总之,元组可以用于处理具有固定数量和类型的数据,并且可以在函数返回多个值或作为函数参数的类型注解时非常有用。

三、 使用元组的异常情况

在TypeScript中,元组是指定数组中元素类型的一种特殊数组类型。与普通数组不同的是,元组中的每个位置可以有不同的类型。

以下是一些在使用元组时会报错的情况:

1、元组长度不匹配:

当元组声明的长度与实际使用时的长度不匹配时,会报错。

let tuple: [number, string] = [1, "hello", true]; // 报错:元组长度不匹配

2、越界访问:

当访问元组中不存在的位置时,会报错。

let tuple: [number, string] = [1, "hello"];
console.log(tuple[2]); // 报错:越界访问

3. 类型不匹配:

当给元组赋值时,类型不匹配会报错。

let tuple: [number, string] = [1, "hello"];
tuple[0] = "world"; // 报错:类型不匹配

需要注意的是,元组的类型声明在使用时是静态检查的,但在运行时是没有影响的。即使出现了类型错误,仍然可以编译成功,但可能会导致运行时错误。在TypeScript中,元组是指定数组中元素类型的一种特殊数组类型。与普通数组不同的是,元组中的每个位置可以有不同的类型。

相关文章:

TypeScript 从入门到进阶之基础篇(三) 元组类型篇

系列文章目录 TypeScript 从入门到进阶系列 TypeScript 从入门到进阶之基础篇(一) ts基础类型篇TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇TypeScript 从入门到进阶之基础篇(三) 元组类型篇TypeScript 从入门到进阶之基础篇(四) symbol类型篇 持续更新中… 文章目录 …...

现代CPU的多种运行模式

目前的CPU大多是支持X86-64技术的兼容CPU,这包括AMD64以及Intel的IA32E(后被正式命名为EM64T,Extended Memory 64 Technology),因为AMD64先出,而EM64T与AMD64完全兼容,所以也统一称为AMD64技术。…...

Python PDF处理模块pypdf库详解

概要 PDF(Portable Document Format)是一种常见的文档格式,广泛用于存储和共享文本和图像数据。在 Python 中,有许多库可以用于处理 PDF 文件,其中之一就是 PyPDF。PyPDF 是一个功能强大的库,它允许你读取…...

C++上位软件通过LibModbus开源库和西门子S7-1200/S7-1500/S7-200 PLC进行ModbusTcp 和ModbusRTU 通信

前言 一直以来上位软件比如C等和西门子等其他品牌PLC之间的数据交换都是大家比较头疼的问题,尤其是C上位软件程序员。传统的方法一般有OPC、Socket 等,直到LibModbus 开源库出现后这种途径对程序袁来说又有了新的选择。 Modbus简介 Modbus特点 1 &#…...

PLSQL Developer 15安装和oracle客户端安装

文章目录 前言一、PLSQL Developer1.下载2.安装 二、oracle客户端1.下载2.环境变量 三、使用1. oci2. 连接3. 配置文件 总结 前言 oracle是经常使用的数据库,PLSQL Developer是众多产品中比较不错的一款工具,接下来我们来介绍PLSQL Developer的安装和使…...

【深度deepin】深度安装,jdk,tomcat,Nginx安装

目录 一 深度 1.1 介绍 1.2 与别的操作系统的优点 二 下载镜像文件及VM安装deepin 三 jdk,tomcat,Nginx安装 3.1 JDK安装 3.2 安装tomcat 3.3 安装nginx 一 深度 1.1 介绍 由深度科技社区开发的开源操作系统,基于Linux内核&#xf…...

解决flask启动报错:ImportError: DLL load failed while importing _dukpy: 找不到指定的程序

现象: 原因:dukpy没有win32执行库 解决办法: 到lfd.uci.edu 第三方库下载dukpy的win32 whl文件 注意: 需要跟你python版本和windows平台(32位/64位)对应 https://www.lfd.uci.edu/~gohlke/pythonlibs/#…...

腾讯面试总结

腾讯 一面 mysql索引结构?redis持久化策略?zookeeper节点类型说一下;zookeeper选举机制?zookeeper主节点故障,如何重新选举?syn机制?线程池的核心参数;threadlocal的实现&#xff…...

面向对象进阶(static关键字,继承,方法重写,super,this)

文章目录 面向对象进阶部分学习方法:今日内容教学目标 第一章 复习回顾1.1 如何定义类1.2 如何通过类创建对象1.3 封装1.3.1 封装的步骤1.3.2 封装的步骤实现 1.4 构造方法1.4.1 构造方法的作用1.4.2 构造方法的格式1.4.3 构造方法的应用 1.5 this关键字的作用1.5.1…...

Blazor项目如何调用js文件

以下是来自千问的回答并加以整理:(说一句,文心3.5所给的回答不完善,根本运行不起来,4.0等有钱了试试) 在Blazor项目中引用JavaScript文件(.js)以实现与JavaScript的互操作&#xff…...

Windows11 - Ubuntu 双系统及 ROS、ROS2 安装

系列文章目录 前言 一、Windows11 - Ubuntu 双系统安装 硬件信息: 设备名称 DESKTOP-B62D6KE 处理器 13th Gen Intel(R) Core(TM) i5-13500H 2.60 GHz 机带 RAM 40.0 GB (39.8 GB 可用) 设备 ID 7673EF86-8370-41D0-8831-84926668C05A 产品 ID 00331-10000-0000…...

深度学习(学习记录)

题型:填空题判断题30分、简答题20分、计算题20分、综合题(30分) 综合题(解决实际工程问题,不考实验、不考代码、考思想) 一、深度学习绪论(非重点不做考察) 1、传统机器学习&…...

html5实现好看的个人博客模板源码

文章目录 1.设计来源1.1 主界面1.2 认识我界面1.3 我的文章界面1.4 我的模板界面1.5 文章内容界面 2.结构和源码2.1 目录结构2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/135368653 html5实现好看…...

SpringSecurity深度学习

SpringSecurity简介 spring Security是什么? Spring Security 是一个强大且高度可定制的身份验证和访问控制框架,用于保护基于Spring的应用程序。它是Spring项目的一部分,旨在为企业级系统提供全面的安全性解决方案。 一个简单的授权和校验…...

odoo17 | 用户界面的基本交互

前言 现在我们已经创建了我们的新模型及其 相应的访问权限,是时候了 与用户界面交互。 在本章结束时,我们将创建几个菜单以访问默认列表 和窗体视图。 数据文件 (XML) Odoo在很大程度上是数据驱动的,因此模块定义的…...

Intel 性能监视器之二

全文来自Intel开发者手册:Intel? 64 and IA-32 Architectures Software Developer’s Manual Volume 3B System Programming Guide.pdf 注意:下文中已经指出手册中的对应页面和章节,请对照手册原文看,任何个人理解错误&#xff…...

Vert.x学习笔记-什么是事件总线

广义事件总线介绍Vert.x的事件总线Vert.x的事件总线的实现方式Vert.x的事件总线通信模式事件总线与消息队列的区别点对点通信模式请求-应答通信模式发布-订阅通信模式 Vert.x的事件总线应用场景Vert.x的事件总线消息Vert.x的事件总线消息示例Vert.x的事件总线的消息类型 拓展 广…...

STM32学习笔记二十二:WS2812制作像素游戏屏-飞行射击游戏(12)总结

至此,飞行射击游戏已经基本实现该有的功能,已经比较接近早期的商业游戏了。 如果采用脚本,可以完成关卡游戏,如果不用,也可以做成无限挑战游戏。 我们汇总一下制作的过程: 1、建模UML 2、主循环处理过程…...

astadmin安装querylist插件Puppeteer

我本来是想在linux服务器上安装,折腾了一天也没安装成功,由于急着用,就先做window10上安装了,以后有时间再研究centos7上安装 一 首先需要安装fastadmin 框架和querylist插件 这个大家可以自行安装,querylist安装地址…...

Python从入门到网络爬虫(MySQL链接)

前言 在实际数据分析和建模过程中,我们通常需要从数据库中读取数据,并将其转化为 Pandas dataframe 对象进行进一步处理。而 MySQL 数据库是最常用的关系型数据库之一,因此在 Python 中如何连接 MySQL 数据库并查询数据成为了一个重要的问题…...

2020年认证杯SPSSPRO杯数学建模A题(第二阶段)听音辨位全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 A题 听音辨位 原题再现: 把若干 (⩾ 1) 支同样型号的麦克风固定安装在一个刚性的枝形架子上 (架子下面带万向轮,在平地上可以被水平推动或旋转,但不会歪斜),这样的设备称为一个麦克风树。不同的麦…...

深入理解CRON表达式:时间调度的艺术

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…...

网络安全—模拟IP代理隐藏身份

文章目录 网络拓扑安装使用代理服务器设置隐藏者设置 使用古老的ccproxy实现代理服务器,仅做实验用途,禁止做违法犯罪的事情,后果自负。 网络拓扑 均使用Windows Server 2003系统 Router 外网IP:使用NAT模式 IP DHCP自动分配或者…...

Resilience4j相关问题及答案(2024)

1、什么是Resilience4j,与Hystrix有何不同? Resilience4j是一个为Java 8和函数式编程设计的故障恢复库,它主要利用了Vavr库中的函数式编程概念。Resilience4j提供了一系列的故障恢复机制,包括断路器(Circuit Breaker&…...

XSKY SDS 产品率先获得 OceanBase V4 新版本认证

近日,北京奥星贝斯科技有限公司(简称:OceanBase)与北京星辰天合科技股份有限公司(简称:XSKY 星辰天合)顺利完成产品兼容性认证。 XSKY 的高性能全闪存储以及混闪存储,与 OceanBase V…...

系统学习Python——类(class):静态方法(staticmethod)和类方法(classmethod)-[基础知识]

分类目录:《系统学习Python》总目录 我们可以在类中定义两种方法,它们不需要一个实例就可以被调用:静态方法(staticmethod)大致与一个类中简单的无实例函数的工作方式类似,而类方法则被传人一个类而不是一个…...

kotlin isEmpty/isNotEmpty/isNullOrEmpty和isBlank/isNotBlank/isNullOrBlank

kotlin 中 isEmpty :如果判断的字符为空返回值返回true否则返回false 它的源码 kotlin.internal.InlineOnly public inline fun CharSequence.isEmpty(): Boolean length 0 length 0: 首先检查字符序列的长度是否为 0。如果长度为 0,则表明这个字…...

Qt/QML编程学习之心得:Linux下USB接口使用(25)

很多linux嵌入式系统都有USB接口,那么如何使用USB接口呢? 首先,linux的底层驱动要支持,在linux kernal目录下可以找到对应的dts文件,(device tree) usb0: usb@ee520000{compatible = "myusb,musb";status = "disabled";reg = <0xEE520000 0x100…...

概率论与数理统计 知识点+课后习题

文章目录 &#x1f496; [学习资源整合](https://www.cnblogs.com/duisheng/p/17872980.html)&#x1f4da; 总复习&#x1f4d9; 选择题&#x1f4d9; 填空题&#x1f4d9; 大题1. 概率2. 概率3. 概率4. P5. 概率6. 概率密度函数 F ( X ) F(X) F(X)7. 分布列求方差 V ( X ) …...

Spring Boot实战:深入理解@Service与@Mapper注解

1. Service 注解 Service 是Spring框架提供的一个注解&#xff0c;用于标记类为业务逻辑层的组件。当类上标注了Service注解后&#xff0c;Spring容器会自动扫描并创建该类的一个实例&#xff08;即Bean&#xff09;&#xff0c;这样我们就可以在其他地方通过自动装配&#xf…...

品牌网站建设哪家好/百度青岛代理公司

Object.defineProperty() 方法会直接在一个对象上定义一个新属性&#xff0c;或者修改一个对象的现有属性&#xff0c;并返回此对象。 语法&#xff1a;Object.defineProperty(obj对象, prop属性, descriptor描述符) 1、 obj 对象 > 给谁加 2 、propName 属性名 > 要加的…...

weui做购物网站的案例/推广一般收多少钱

...

软文营销文章范文/湖南seo优化价格

2019独角兽企业重金招聘Python工程师标准>>> 客户端——MemStore——列族——Hfile 1、Hbase在执行写操作的时候&#xff0c;首先会将写动作记录在hlog,memstore中&#xff0c;只有在这两个地方都确认完成后才被记录操作成功。 Memstore是内存里面的缓冲区&#xff…...

建设网站翻译英文翻译/百度上的广告多少钱一个月

作者: Stephen Walther 原文地址&#xff1a;http://msdn.microsoft.com/asp.net/default.aspx?pull/library/en-us/dnvs05/html/UserProfiles.asp 译者&#xff1a;Tony Qu 概要&#xff1a;许多ASP.NET应用程序需要跨访问的用户属性跟踪功能&#xff0c;在ASP.NET1.1中&…...

win7系统做网站服务器/沈阳市网站

原题链接 不要自卑&#xff0c;去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量&#xff0c;那是最好的事&#xff01;请相信自己&#xff0c;加油o~ 77.组合 给定两个整数 n 和 k&#xff0c;返回 1 … n 中所有可能的 k 个数的组合。 示例&#xff1a; 输入: n…...

如何做 旅游网站内容/鸿星尔克网络营销

前言 呵呵 最近看到了一系列跟 java编译器 相关的一系列的问题, 所以整理了一下 一下部分代码, 截图 基于 : jdk7u40, idea2019 的 bytecode viewer, jls7, jdk7 的 javac 1. 关于 javap 里面看不到 "<init>", "<clinit>" https://hllv…...