TypeScript 元组

数组中元素的数据类型都是相同的,除了 any[] 类型的数组可以不同。如果存储的元素数据类型不同,则需要使用元组。

元组中允许存储不同类型的元素,元组还可以作为参数传递给函数。

1. 创建元组的语法

var tuple_name = [value1,value2,value3,…value n]

声明一个元组并初始化:

var mytuple = [10,"Aizws"];

或者我们可以先声明一个空元组,然后再初始化:

var mytuple = []; 
mytuple[0] = 120 
mytuple[1] = 234

2. 访问元组

元组中元素使用索引来访问,第一个元素的索引值为 0,第二个为 1,以此类推第 n 个为 n-1,语法格式如下:

tuple_name[index]

以下范例定义了元组,包含了数字和字符串两种类型的元素:

var mytuple = [10,"Aizws"]; // 创建元组
console.log(mytuple[0]) 
console.log(mytuple[1])

编译以上代码,得到以下 JavaScript 代码:

var mytuple = [10, "Aizws"]; // 创建元组
console.log(mytuple[0]);
console.log(mytuple[1]);

输出结果为:

10
Aizws

3. 元组运算

我们可以使用以下两个函数向元组添加新元素或者删除元素:

  • push() 向元组添加元素,添加在最后面。
  • pop() 从元组中移除元素(最后一个),并返回移除的元素。
var mytuple = [10,"Hello","World","typeScript"]; 
console.log("添加前元素个数:"+mytuple.length) // 返回元组的大小
 
mytuple.push(12) // 添加到元组中
console.log("添加后元素个数:"+mytuple.length) 
console.log("删除前元素个数:"+mytuple.length) 
console.log(mytuple.pop()+" 元素从元组中删除") // 删除并返回删除的元素
        
console.log("删除后元素个数:"+mytuple.length)

编译以上代码,得到以下 JavaScript 代码:

var mytuple = [10, "Hello", "World", "typeScript"];
console.log("添加前元素个数:" + mytuple.length); // 返回元组的大小
mytuple.push(12); // 添加到元组中
console.log("添加后元素个数:" + mytuple.length);
console.log("删除前元素个数:" + mytuple.length);
console.log(mytuple.pop() + " 元素从元组中删除"); // 删除并返回删除的元素
console.log("删除后元素个数:" + mytuple.length);

输出结果为:

添加前元素个数:4
添加后元素个数:5
删除前元素个数:5
12 元素从元组中删除
删除后元素个数:4

4. 更新元组

元组是可变的,这意味着我们可以对元组进行更新操作:

var mytuple = [10, "Aizws", "Taobao", "Google"]; // 创建一个元组
console.log("元组的第一个元素为:" + mytuple[0]) 
 
// 更新元组元素
mytuple[0] = 121     
console.log("元组中的第一个元素更新为:"+ mytuple[0])

编译以上代码,得到以下 JavaScript 代码:

var mytuple = [10, "Aizws", "Taobao", "Google"]; // 创建一个元组
console.log("元组的第一个元素为:" + mytuple[0]);
// 更新元组元素
mytuple[0] = 121;
console.log("元组中的第一个元素更新为:" + mytuple[0]);

输出结果为:

元组的第一个元素为:10
元组中的第一个元素更新为:121

5. 解构元组

我们也可以把元组元素赋值给变量,如下所示:

var a =[10,"Aizws"] 
var [b,c] = a 
console.log( b )    
console.log( c )

编译以上代码,得到以下 JavaScript 代码:

var a = [10, "Aizws"];
var b = a[0], c = a[1];
console.log(b);
console.log(c);

输出结果为:

10
Aizws

下一章:TypeScript 联合类型

联合类型(Union Types)可以通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值。只能赋值指定的类型,如果赋值其它类型就会报错。1. 创建联合类型的语法:Type1|Type2|Type3