TypeScript 元组

类型化数组

元组是类型化的数组,具有预定义长度,且每个索引都有对应的类型。

元组非常有用,因为它们允许数组中的每个元素都是已知类型的值。

要定义一个元组,需要指定数组中每个元素的类型:

实例

// 定义我们的元组
let ourTuple: [number, boolean, string];

// 正确初始化
ourTuple = [5, false, 'Coding God was here'];

亲自试一试

如您所见,我们有一个数字、一个布尔值和一个字符串。但是,如果我们尝试以错误的顺序设置它们,会发生什么呢:

实例

// 定义我们的元组 
let ourTuple: [number, boolean, string];

// 初始化不正确会引发错误
ourTuple = [false, 'Coding God was mistaken', 5];

亲自试一试

尽管我们有 booleanstringnumber,但在我们的元组中,顺序很重要,否则会抛出错误。

只读元组

一个好的做法是将您的元组设置为只读。

元组只对初始值有严格定义的类型:

实例

// 定义我们的元组  
let ourTuple: [number, boolean, string];  
// 正确初始化  
ourTuple = [5, false, 'Coding God was here'];  
// 对于索引 3+,我们的元组中没有类型安全性  
ourTuple.push('Something new and wrong');  
console.log(ourTuple);

亲自试一试

您会看到新的元组只对初始值有严格定义的类型:

实例

// 定义我们的只读元组
const ourReadonlyTuple: readonly [number, boolean, string] = [5, true, 'The Real Coding God'];
// 抛出错误,因为它是只读的。
ourReadonlyTuple.push('Coding God took a day off');

亲自试一试

要了解有关只读等访问修饰符的更多信息,请转到我们关于它们的部分:TypeScript 类。

如果您以前使用过 React,那么您很可能已经使用过元组。

useState 返回一个由值和设置函数组成的元组。

const [firstName, setFirstName] = useState('Dylan') 是一个常见的例子。

由于结构原因,我们知道列表中的第一个值将是某种值类型(在本例中为 string),而第二个值是 function

命名元组

命名元组允许我们为每个索引处的值提供上下文。

实例

const graph: [x: number, y: number] = [55.2, 41.3];

命名元组允许我们为每个索引处的值提供上下文。

解构元组

由于元组是数组,因此我们也可以对它们进行解构。

实例

const graph: [number, number] = [55.2, 41.3];
const [x, y] = graph;

要回顾解构,请单击此处。