TS系列教程六:数组-元组

198 阅读1分钟

元组的定义

数组中的元素类型不一致,在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;

只读的数组和元组就完全是一个东西了,长度固定,类型固定,上边这种写法感觉可读性不怎么好,写起来方便些,这里记录下