# 元组

# 基本用法

数组合并了相同类型的对象, 而元组(Tuple)合并了不同类型的对象.

let tom: [string, number] = ["Tom", 25];
1

定义元组类型必须与实际数组的每项类型一一对应.

let tom: [string, number] = ["Tom", 25, 12]; // X
let tom: [string, number] = ["Tom"]; // X
let tom: [string, number] = [25, "Tom"]; // X
1
2
3

# 访问元组里的 item

tom[0]; // 'Tom'
1

# 赋值

tom[1] = 24;
1

赋值是可以分开做的, 但是初始化必须把所有元组里指定的类型写上:

let tom: [string, number];
tom = ["Tom", 25]; // right

let tom: [string, number];
tom = ["Tom"];

// Property '1' is missing in type '[string]' but required in type '[string, number]'.
1
2
3
4
5
6
7

# 越界的元素

当添加越界的元素时,它的类型会被限制为元组中每个类型的联合类型:

let tom: [string, number];
tom = ["Tom", 25];
tom.push("male");
tom.push(true);

// Argument of type 'true' is not assignable to parameter of type 'string | number'.
1
2
3
4
5
6