TypeScript中数组和元祖
TypeScript中数组和元祖
本文我们讨论下TypeScript中数组和元祖,讨论两者之间的区别以及应用场合。
1. 数组
在TypeScript中数组可以存储元素集合,可以同一类型或不同类型。可以通过两种方式定义数组:
type MyArray = string[];
这里定义了单一数据类型。下面定义包括多种类型数组:
type MyArray = Array<string | number>;
类似的通过下面方式定义数组,通过类型推断,效果与上面一致:
const numberArray = [1, 2, 3, 4, 5];const mixedArray = ['a', 2, 'c'];
这样定义的问题是没法确切知道每个元素的具体类型,无法进一步进行类型检查:
const item = mixedArray[2];
这里item数据类型为string | number
,要确定具体类型必须通过typeof
进行额外检查。
TypeScript提供了可以定义精确元素类型的方法,下面我们讨论元祖。
2. 元祖
定义元祖的语法如下:
type FixedArray = [string, number, string];
可以给每个元素指定数据类型:
const mixedArray: FixedArray = ['a', 2, 'c'];const first = mixedArray[0]; // string
const second = mixedArray[1]; // number
但有些奇怪的现象需要解释下。这是一个固定长度数组,显示设定每个元素类型,但我们能够访问固定长度之外的元素吗?我们可以,那其数据类型是什么呢?
const fourth = mixedArray[3]; // string | number
我们居然得到了string | number
数据类型。
好吧,如果我们给范围外的元素设置正确的数据类型,然后再赋值,类型可以确定吗?
mixedArray[3] = 4;
const fourth = mixedArray[3]; // string | number
不,我们可以给范围外的元素赋值,但其仍然是已知数组元素类型的混合类型。
因此使用元祖可以确定元素数据类型,但不要超出范围,可以把元祖理解为固定长度,超出范围不能保证其类型。
JavaScript没有元祖类型,最终只能使用JavaScript数组表示元祖,虽然其可以检查你访问的区域,但不能保证其他模块不改变数组的值。
3. 总结
元祖非常有用,但有点疯狂,基于JavaScript的语言怎能不疯狂。
数组一般用于保存相同类型元素集合,元祖可以存储不同类型元素集合,两者都可以作为函数参数。应用时需了解JavaScript的数组特性。
TypeScript中数组和元祖相关推荐
- Scala在window上安装及基本概述(变量,数据类型,插值器,条件循环,数组,元祖,集合)
Scala 一.Scala安装 1.windows安装Scala 2.在idea中使用Scala 3.使用maven创建工程 二.Scala简介 1.Scala概述 2.Scala特点 (1)静态类型 ...
- python中列表 字典 元祖 enumerate()函数
2017-5-29 列表 : [ ] list = [] #定义一个空列表list.append(1) #向列表中添加成员list.count(2) #计算2在列表中出现的次数list.extend( ...
- python 列表 元祖 字典 集合_python中列表、元祖、字典和集合
list 允许重复的集合,是有序的:即元素可以是一样的,也可以修改元素: tuple 允许重复的集合,是有序的:但子元素是不可以修改的 dict 允许重复的集合,是无序的:元素是可以修改的 set ...
- 元祖字典 java_元祖和字典
元祖的定义 Tuple 元祖与列表类似,不同之处在于元祖中 元素不能修改 元祖表示多个元素的序列 元祖在python中,有特定的应用场景 元祖用于存储 一串信息,数据之间用逗号分隔 元祖用 ( ) 定 ...
- Python中序列、列表、元祖(数组)、集合、字典
序列 序列的两个特点: 1.索引操作符,从序列中抓取一个特定项目 2.和切片操作符,获取序列的一个切片,即一部分序列 Python一些内置函数 1.cmp(A, B):比较可为list.tupl ...
- 如何在TypeScript中删除数组项?
本文翻译自:How do I remove an array item in TypeScript? I have an array that I've created in TypeScript a ...
- python中的切片能否修改元祖_Python列表的增删改查和元祖
一.定义列表 1.names = ['mike','mark','candice','laular'] #定义列表 2.num_list = list(range(1,10)) #range生成1-1 ...
- python 字典排序 最大键_Python中的列表、元祖、字典、集合操作大全
来源:http://suo.im/5HPGNT 在Python中有4种内建的数据结构:列表.元组.字典.集合.今天我们将会学习如何使用它们,以及它们如何使编程变得简单. 一.列表list 是处理一组有 ...
- python字典、列表、元祖使用场景_python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍...
python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 元祖跟列表类似.只不过是有区别的. 如下: tuple(元祖英文) 跟列表类似, 元素不能 ...
最新文章
- 微信公众号接入图灵机器人实现自动回复消息
- 高性能js之js文件的加载与解析
- android+notepad教程,Android Sample学习——NotePad
- 最近发包给朋友,搞定软件小活儿、解决小功能模块的感受
- 欧框语言框架标准C2,CEFR欧洲语言共同参考框架
- Linux常用命令(第二版) --文件管理命令
- Spring Boot集成ShedLock分布式定时任务实例
- mysql crud_如何使用Laravel和MySQL构建您的第一个CRUD应用
- pydicom 显示jpeg压缩图像_解读常见图像格式
- Nginx+Tomcat+Memecached实现session共享配置
- 第十二章_网络搭建及训练
- dw中创建java程序_Java创建对象的过程简介
- 简述数字信号处理的内容和理论
- 电脑录屏软件哪个好用,分享4款电脑录制视频清晰软件
- js 中 spilt 方法
- 一口气带你学会Redis升级后的几种数据类型,效率daydayup
- Java 开发中遇到的印象深刻的问题
- jupyter lab版本更新问题
- cdn投资骗收租_为研究直播的投资点,才意识到CDN对内容分发的基础性意义。迟到3年才看到这一点,错过20倍的网宿科技...
- [BZOJ4668]冷战
热门文章
- 屡破记录!国产数据库何以后来居上?
- Stable Diffusion10
- IDEA Out of memory 问题
- 三八妇女节快乐----IT女神活动随笔
- 长沙理工计算机竞赛黑马,从“清北摇篮”到学科竞赛全国200强,安居育才成为最大黑马!...
- 360Email:会员邮件营销取胜要点总结
- ae等高线_Topograph脚本下载-AE视频高度图地形等高线轮廓脚本Topograph下载v1.0 免费版-西西软件下载...
- TensorRT之条件控制
- C语言:小球从100米的地方下落,求第10次反弹高度,前10次落地总高度
- 全方位揭秘!大数据从0到1的完美落地之Hive分区