元组类型
元组类型类似于数组类型,只是规则略有不同。
数组合并了相同类型的对象,而元组(Tuple)合并了不同类型的对象。
数组类型
首先回顾一下数组类型:
其中只要包括数组类型的两种写法。
元组类型
元组类型具体规定了数组中每一项的类型。
for example one :
let tupleArr :[string,number] ;
// tupleArr =[1,2] ;//错误
//tupleArr =['1'] ;//错误
//tupleArr = ['1', 2,3]//错误
tupleArr =['1',2]
声明了一个元组类型的变量tupleArr,规定只能是[string,number] 的格式,所以我们在给这个变量赋值时就必须满足元组类型的约束。tupleArr = [‘1’, 2,3]==》这属于给元组添加越界元素,但是失败了。
for example two :
let tupleArr :[string,number] ;
// tupleArr[0] = 1;
tupleArr[0] = '1';
tupleArr[1] = 2;
//tupleArr[2] = 3; //错误
我们可以单独的给数组项赋值,但是我们的长度如果超过了元组类型初始长度的时候,就会报错,比如我们添加下标为2的时候,这属于给元组添加越界元素,但是失败了。
添加越界元素
那怎么给元组类型添加多余的元素值呢。
for example three :
let tupleArr :[string,number] ;
tupleArr = ['1', 2]
//tupleArr.push(true) //错误
//tupleArr.push([1,2]) //错误
tupleArr.push('3')
tupleArr.push(4)
tupleArr.push(5,'6')
当然元组类型还是数组类型的另外一种形式,所以我们可以使用数组的方法push,对原数组进行改变,这样并不会报错,但是我们添加的元素还是有要求的,必须满足元组类型中每个类型的联合类型;如上面的就必须是 stringn | number ;可以这样理解(仅共理解,但不全等于):
let tupleArr: (string | number)[];
tupleArr = ['1', 2]
// tupleArr.push(true) //错误
// tupleArr.push([1,2]) //错误
tupleArr.push('3')
tupleArr.push(4)
tupleArr.push(5, '6')
但是元组类型比数组类型要求更苛刻哦