元组的定义
数组中的元素类型不一致,在ts中我们称之为元组。
元组每个元素都要定义类型。
//数组
let arr1:(number|string)[];
//元组
let arr:[number,number,string];
arr=[1,2,'hello']
数组和元组定义的不同点是数组类型定义在中括号外边(number[]),元组的类型定义在中括号里边([number])。
元组的可选参数
let arr:[
number,
number,
string?
]
可选参数必须放到最后,通常来说元组的长度是固定的,类型也是固定的,虽然它也可以用...扩展符,感觉那样已经失去了元组的意义了
let arr1:[
number,
number,
...string[]
]
let arr2:[
number,
number,
...any[]
]
扩张符可以放在头、中、尾,表示0个或多个,一般不会用到
元组的长度
type Arr=[
number,string
]
let arr:Arr=[1,'2']
if(arr.length==3)//报错
元组的长度如果你没用扩展符定义,它就是固定的,上边的例子长度是2,会提示2和3比较没有任何意义
只读元组
type Arr=readonly[
number,
string
]
定义和只读数组类似,同样的它也是普通元组的父类,不能赋值给普通元组,反之可以
只读数组/元组的另一种写法
let arr=[1,'hello'] as const;
只读的数组和元组就完全是一个东西了,长度固定,类型固定,上边这种写法感觉可读性不怎么好,写起来方便些,这里记录下