Skip to content

元组(Tuple)

是一种特殊的数组类型,它允许你指定数组中每个元素的类型,并且元素的顺序和类型是固定的。元组在处理具有固定结构的数据时非常有用。

基本用法

ts
// 定义一个元组类型
let user: [string, number];

// 正确赋值
user = ["Alice", 25]; // OK

// 错误赋值
user = [25, "Alice"]; // Error: 类型不匹配

访问元组元素

你可以通过索引访问元组中的元素

ts
let user: [string, number] = ["Alice", 25];

console.log(user[0]); // 输出: Alice
console.log(user[1]); // 输出: 25

可选元素

TypeScript 2.6 引入了元组中的可选元素,使用 ? 来表示某个元素是可选的

ts
let user: [string, number?];

user = ["Alice"]; // OK
user = ["Alice", 25]; // OK

元组解构

你可以使用解构赋值来提取元组中的值

ts
let user: [string, number] = ["Alice", 25];
let [name, age] = user;

console.log(name); // 输出: Alice
console.log(age); // 输出: 25

元组与函数

元组常用于函数的返回值,尤其是当函数需要返回多个值时

ts
function getUser(): [string, number] {
    return ["Alice", 25];
}

let [name, age] = getUser();
console.log(name, age); // 输出: Alice 25

元组的长度

元组的长度是固定的,不能随意增加或减少元素:

typescript

ts
let user: [string, number] = ["Alice", 25];
user.push("extra"); // Error: 元组的长度是固定的

只读元组

你可以使用 readonly 关键字来定义只读元组,防止元组被修改

ts
let user: readonly [string, number] = ["Alice", 25];
user[0] = "Bob"; // Error: 无法修改只读元组

总结

TypeScript 中的元组提供了一种灵活的方式来处理具有固定结构的数据。通过元组,你可以确保数组中的元素类型和顺序是固定的,从而提高代码的类型安全性和可读性。

实战1

使用元组生成联合类型

ts
const colors = ['♥', '♦', '♣', '♠']
const values = [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']

type Values = (typeof values)[number]
type Colors = (typeof colors)[number]

function createDeck(value:Values, color:Colors) {}

Released under the MIT License.