元组(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) {}