TypeScript系列之-- 数组和元组类型

数组的定义:

  1. 第一种,可以在元素类型后面接上[]
let list: number[] = [1, 2, 3];

  1. 第二种方式是使用数组泛型,Array<元素类型>
let list: Array<number> = [1, 2, 3];

如果数组想每一项放入不同数据怎么办?用元组类型

元组类型:

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同

let tuple: [number, string] = [22, 'hahha']  OK
let tuple: [number, string] = ['hahha'],22,]  Error //写错类型报错
let tuple: [number, string] = ['hahha'],22,23]  Error //越界报错

可以对元组使用数组的方法,比如使用 push 时,但有越界报不报错????,这不跟上面定义的已知数量有矛盾吗??

let tuple: [number, string] = [18, 'lin']
tuple.push(100)   // 但是只能 push 定义的 number 或者 string

上面问题网上大佬解释:
TypeScript 在类型控制的时候会受限于 JavaScript 的灵活性,所以一般并不是判断类型精确相等,而是判断类型兼容。

JavaScript 没有元组类型,但在提供了解构语法之后,数组常常被当作元组类型来使用。所以 TypeScript 提供元组类型,但元组类型实际只是固定了长度和每个元素类型的数组,可以使用数组的方法。但由于类型限制了长度和具体的元素类型,所以部分功能又受到限制。

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

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

相关文章

建立SFTP服务器

文章目录 建立SFTP服务器1. 使用VMware安装CentOS 7虚拟机。2. 安装完虚拟机后&#xff0c;进入虚拟机&#xff0c;修改网络配置&#xff08;onboot改为yes&#xff09;并重启网络服务&#xff0c;查看相应IP地址&#xff0c;并使用远程连接软件进行连接。3. 配置yum源&#xf…

vscode常用操作

1 vscode跳转node_modules下文件&#xff0c;没有切换定位到左侧菜单目录的问题 2&#xff0c;搜索node-modules 3&#xff0c;设置选中字体颜色 {"workbench.colorTheme": "Default Light Modern","editor.mouseWheelZoom": true,"termin…

opencascade 快速显示AIS_ConnectedInteractive源码学习

AIS_ConcentricRelation typedef PrsDim_ConcentricRelation AIS_ConcentricRelation AIS_ConnectedInteractive 简介 创建一个任意位置的另一个交互对象实例作为参考。这允许您使用连接的交互对象&#xff0c;而无需重新计算其表示、选择或图形结构。这些属性是从您的参考对…

Matplotlib绘图指南:从基础绘图到多子图展示

目录 前言 导入模块 第一点&#xff1a;绘制图像 第二点&#xff1a;保存图像 第三点&#xff1a;多图形的绘制 第四点&#xff1a;绘制多子图 总结 前言 在数据可视化中&#xff0c;Matplotlib是一款强大的Python库&#xff0c;提供了丰富的功能来绘制各种类型的图表。…

3D透视图转的时候模型闪动怎么解决?---模大狮模型网

在3D建模与渲染的世界中&#xff0c;透视图是我们观察和操作模型的重要窗口。然而&#xff0c;有时候在旋转透视图时&#xff0c;模型会出现闪动的现象&#xff0c;这不仅影响了我们的工作效率&#xff0c;还可能对最终的渲染效果产生负面影响。本文将探讨这一问题的成因&#…

prompt提示词:如何让AI帮你提一个好问题

我们看完一篇文章的时候&#xff0c;有时候发给AI后&#xff0c;不知道如何问AI&#xff0c;不知道问哪些问题&#xff0c;你使用这个提示词&#xff0c;就可以让AI帮你想一个好问题&#xff0c;然后你用AI想好的问题再去问AI 能提出一个好的问题是非常难的 提示词 结合文章…

Elasticsearch8.13.4版本的Docker启动关闭HTTPS

博主环境是&#xff1a; 开发环境&#xff1a;SpringbootElasticSearch客户端对应的starter 2.6.3版本 maven配置 <!-- ElasticSearch --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elas…

计算机体系结构-2024期末考试

前言 最后一个字落笔&#xff0c;虽然知道并没有发挥到最好&#xff0c;内心还是感慨良多。 真正意义上本科阶段的课程考试&#xff0c;到此就结束了。 正如青春总有不完美的地方&#xff0c;此刻思绪竟飘到了三年前的盛夏&#xff0c;那个骄傲的少年。 扯远了&#xff0c;…

基于双PI结构FOC闭环控制的永磁同步电机控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于双PI结构FOC闭环控制的永磁同步电机控制系统simulink建模与仿真。 2.系统仿真结果 3.核心程序与模型 版本&#xff1a;MATLAB2022a 64 4.系统原理简介 永磁同步电机&a…

基于遗传优化的货柜货物摆放优化问题求解matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于遗传优化的货柜货物摆放优化问题求解matlab仿真。在一个货架上&#xff0c;初始状态下&#xff0c;随机将货物放在货柜上&#xff0c;优化之后&#xff0c;整…

Thinkphp5响应式进销存仓库管理系统

随着企业规模的不断扩大和市场竞争的日益激烈&#xff0c;进销存管理在企业的运营中扮演着越来越重要的角色。为了提高企业的运营效率&#xff0c;降低库存成本&#xff0c;提升客户满意度&#xff0c;越来越多的企业开始引入进销存仓库管理系统。 进销存仓库管理系统是一种集…

Gradle的学习

1.1 Gradle的优势 一款最新的&#xff0c;功能最强大的构建工具&#xff0c;用它逼格更高 使用Groovy或Kotlin代替XML&#xff0c;使用程序代替传统的XML配置&#xff0c;项目构建更灵活 丰富的第三方插件&#xff0c;让你随心所欲使用 完善Android,Java开发技术体系 1.2 …

[Algorithm][动态规划][子数组/子串问题][最大子数组和][环形子数组的最大和][乘积最大子数组][乘积为正数的最长子数组长度]详细讲解

目录 1.最大子数组和1.题目链接2.算法原理详解3.代码实现 2.环形子数组的最大和1.题目链接2.算法原理详解3.代码实现 3.乘积最大子数组1.题目链接2.算法原理详解3.代码实现 4.乘积为正数的最长子数组长度1.题目链接2.算法原理详解3.代码实现 1.最大子数组和 1.题目链接 最大子…

CSS(七)

文章目录 CSS&#xff08;七&#xff09;1. 精灵图&#xff08;重点&#xff09;1.1 为什么需要精灵图1.2 精灵图&#xff08;sprites&#xff09;的使用1.3 案例&#xff1a;拼出自己名字1.3.1 案例效果1.3.2 代码参考 2. 字体图标2.1 字体图标的产生2.2 字体图标的优点**2.3*…

玩转STM32-通用同步/异步收发器USART(详细-慢工出细活)

CPU与外围设备之间的信息交换或计算机与计算机之间的信息交换称为通信。基 本的通信方式有两种&#xff0c;即并行通信和串行通信。文章目录 一、串行通信基础1.1 串行通信的方式1.2 串行通信的数据传输形式1.3 波特率 二、STM32的USART的结构特征&#xff08;了解&#xff09;…

每天五分钟深度学习:如何使用计算图来反向计算参数的导数?

本文重点 在上一个课程中&#xff0c;我们使用一个例子来计算函数J&#xff0c;也就相当于前向传播的过程&#xff0c;本节课程我们将学习如何使用计算图计算函数J的导数。相当于反向传播的过程。 计算J对v的导数&#xff0c;dJ/dv3 计算J对a的导数&#xff0c;dJ/da&#xf…

【Mybatis】映射文件中获取参数的符号#{}和${}的区别

在xml映射文件中获取参数的符号都是用的#{}的方式&#xff0c;其实Mybatis还支持另一种符号来接收传递过来的参数值&#xff0c;就是${}&#xff0c;他们是区别就在与底层使用jdbc的statement不一样 #{}对应的是PreparedStatementd对象来执行sql语句 ${}对应的是Statement对象…

AGV行业怎么办?投标价格没有最低,只有更低~

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 随着移动机器人&#xff08;AGV/AMR&#xff09;行业的快速发展&#xff0c;市场逐渐从初期的高速增长转向成熟阶段。 2024年&#xff0c;AGV企业…

数据库自动化管理的六大等级

什么是数据库自动化管理&#xff1f; 数据库自动化管理是指通过使用工具和流程&#xff0c;在尽量减少人为干预的情况下&#xff0c;管理和执行与数据库相关的任务。主要目的当然是提高效率&#xff0c;减少人为错误&#xff0c;确保一致性&#xff0c;并解放 DBA 和开发者&am…

【Mybatis】映射文件中#{}里的其他属性

#{}里除了可以写接收参数的名称外&#xff0c;还可以设置javaType&#xff0c;jdbcType&#xff0c;mode&#xff0c;numericScale,resultMap,typeHandler,jdbcTypeName这些属性的。 其他的属性除mode&#xff08;存储过程相关讲到存储过程的时候在讲&#xff09;外使用方式都…