TypeScript 元组(Tuple)
TypeScript 元组(Tuple)
本节介绍元组这一数据类型的定义及其使用,通过元组可以存储不同类型的元素,而非像数组那样只能存储相同元素类型(any[] 除外)。
1. 慕课解释
相同类型元素组成成为数组,不同类型元素组成了元组(Tuple)。
2. 定义元组类型
声明一个由 string
和 number
构成的元组:
const list: [string, number] = ['Sherlock', 1887] // okconst list1: [string, number] = [1887, 'Sherlock'] // error
代码解释: 元组中规定的元素类型顺序必须是完全对照的,而且不能多、不能少,list1
中定义的第一个元素为 string
类型,不能赋值为 number
类型的数据。
当赋值或访问一个已知索引的元素时,会得到正确的类型:
const list: [string, number] = ['Sherlock', 1887]list[0].substr(1) // ok
list[1].substr(1) // Property 'substr' does not exist on type 'number'.
代码解释:
第 3 行,list[0]
是一个字符串类型,拥有 substr() 方法。
第 4 行,list[1]
是一个数字类型,没有 substr() 方法,所以报错。
要注意元组的越界问题,虽然可以越界添加元素(不建议),但是不可越界访问:
const list: [string, number] = ['Sherlock', 1887]
list.push('hello world')console.log(list) // ok [ 'Sherlock', 1887, 'hello world' ]
console.log(list[2]) // Tuple type '[string, number]' of length '2' has no element at index '2'
代码解释:
第 2 行,向一个声明了只有两个元素的元组继续添加元素,这种操作虽然可行,但是严重不建议!
第 5 行,该元组只有两个元素,不可越界访问第三个元素。
3. 可选元素类型
元组类型允许在元素类型后缀一个 ?
来说明元素是可选的:
const list: [number, string?, boolean?]
list = [10, 'Sherlock', true]
list = [10, 'Sherlock']
list = [10]
代码解释: 可选元素必须在必选元素的后面,也就是如果一个元素后缀了 ?
号,其后的所有元素都要后缀 ?
号。
4. 元组类型的 Rest 使用
元组可以作为参数传递给函数,函数的 Rest 形参可以定义为元组类型:
declare function rest(...args: [number, string, boolean]): void
等价于:
declare function rest(arg1: number, arg2: string, arg3: boolean): void
TIPS: 在声明文件(.d.ts)中,关键字 declare 表示声明作用。声明文件用于编写第三方类库,通过配置
tsconfig.json
文件中的declaration 为 true
,在编译时可自行生成。
还可以这样:
const list: [number, ...string[]] = [10, 'a', 'b', 'c']const list1: [string, ...number[]] = ['a', 1, 2, 3]
代码解释: Rest 元素指定了元组类型是无限扩展的,可能有零个或多个具有数组元素类型的额外元素。
5. 小结
本小节介绍了元组类型的声明方式和一些技巧,在实际开发中可以灵活应用。
TypeScript 元组(Tuple)相关推荐
- java 元组 getinteger_TS数据类型:从C++/Java/Python到TS看元组tuple—元组的来龙去脉...
在C++有Java这种强类型语言中,常用的Array.List.Set ,在集合中只能是一种类型(可以复习下:<再谈Java数据结构-分析底层实现与应用注意事项). int data[] = n ...
- 第六节:又一种新的数据类型:元组Tuple
每次发布招聘推文都会被喷薪资太低,招不到人.上周的发布react开发的招聘,居然没有人喷薪资太低了,突然有点不习惯. 摊手+无辜脸.jpg 招聘先放一边,继续回来学习我们的typescript,后续简 ...
- c# 元组Tuple
Tuple类型像一个口袋,在出门前可以把所需的任何东西一股脑地放在里面.您可以将钥匙.驾驶证.便笺簿和钢笔放在口袋里,您的口袋是存放各种东西的收集箱.C# 4.0引入的一个新特性 Tuple类型与口袋 ...
- pandas索引复合索引dataframe数据、索引dataframe中指定行和指定列交叉格子的数据内容(getting a specific value)、使用元组tuple表达复合索引的指定行
pandas索引复合索引dataframe数据.索引dataframe中指定行和指定列交叉格子的数据内容(getting a specific value).使用元组tuple表达复合索引的指定行 目 ...
- pandas索引复合索引dataframe数据、索引其中一个水平(level)的所特定数据行、指定数据行(index a row of a level)、使用元组tuple表达复合索引的指定行
pandas索引复合索引dataframe数据.索引其中一个水平(level)的所特定数据行.指定数据行(index a row of a level).使用元组tuple表达复合索引的指定行 目录
- pandas索引复合索引dataframe数据、索引其中多个水平(level)的多个数据行(index rows from different levels)、使用元组tuple表达复合索引的指定行
pandas索引复合索引dataframe数据.索引其中多个水平(level)的多个数据行(index rows from different levels and combine).使用元组tupl ...
- python元组(tuple)使用示例+常用方法+列表(list)和元组(tuple)的异同?
python元组(tuple)使用示例+常用方法+列表(list)和元组(tuple)的异同? 元组(tuple) # 元组类似列表,元组里面的元素也是进行索引计算. # 列表里面的元素的值可以修改, ...
- 元组Tuple、数组Array、映射Map
一.元组Tuple 元组Tuple是不同类型的值的聚集,元组的值将单个的值包含在圆括号中来构成,元组可以包含一个不同类型的元素 如 val riple = (100, "Scala" ...
- 元组tuple类型内置方法
目录 元组tuple类型内置方法 用途 定义 常用操作+内置方法 优先掌握 存一个值or多个值 有序or无序 可变or不可变 元组tuple类型内置方法 元组是不可变的列表,在定义完成后后面就不可以进 ...
最新文章
- gcc:undefined reference to 'std::cout'
- python注释_Python的注释用法
- Python中numpy库unique函数解析
- .net MVC4.0项目发布到阿里云虚拟主机中遇到的问题。
- 第4章 变量、作用域和内存问题
- 转载 从SRAM中读写一个数据问题——Verilog
- 解决linux写入ntfs盘时报错:只读文件系统
- 2022最新Spring相关大厂常问技术面试题大全 —— 金三银四好时机
- python进阶课程目标 学习内容_Python学习教程(Python学习路线):第九天-面向对象进阶...
- 【数据结构】DFS 代码模板
- 始于颜值 敬于才华 合于性格 久于善良 终于人品
- 优化mac触摸板(Trackpad)使用体验的推荐设置
- EasyUI 中combobox利用拼音进行检索
- 注册gmail账号,手机无法接受验证码的问题
- jsp网站用什么虚拟主机
- win10多屏显示时分别设置壁纸
- Vue为啥可以成为2019年的一匹黑马?
- 西邮校园网路由器教程
- D. Colored Rectangles
- 有一个背包,容量为m,然后有n个货物,重量分别为w1,w2,w3...wn,每个货物的价值是v1,v2,v3...vn,w和v没有任何关系,请求背包能装下的最大价值...
热门文章
- DOS批处理中%cd%和%~dp0的区别
- 常用浏览器修改User-Agent的方法
- Anaconda安装(ubuntu 14.04.03 LTS 64bit)
- 【AI视野·今日Robot 机器人论文速览 第十一期】Mon, 21 Jun 2021
- 【今日CV 计算机视觉论文速览】 11 Mar 2019
- MxNet 迁移学习实现深度学习分类
- 认识进程 java 1615387415
- DirectoryInfo类 c# 1614534016
- 草稿 断开始datagrewvies 01
- 学习日报 1027 自动类型转换 运算符