TypeScript 元组


类型化数组

元组是一个类型化的数组每个索引都有预定义的长度和类型。

元组很棒,因为它们允许数组中的每个元素都是已知类型的值。

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

示例

// define our tuple
let ourTuple: [number, boolean, string];

// initialize correctly
ourTuple = [5, false, 'Coding God was here'];
亲自试一试 »

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

示例

// define our tuple
let ourTuple: [number, boolean, string];

// initialized incorrectly which throws an error
ourTuple = [false, 'Coding God was mistaken', 5];
亲自试一试 »

尽管我们有一个boolean,string, 和number顺序在我们的元组中很重要,并且会抛出错误。


只读元组

一个好的做法是让你的元组readonly

元组仅具有强定义的初始值类型:

示例

// define our tuple
let ourTuple: [number, boolean, string];
// initialize correctly
ourTuple = [5, false, 'Coding God was here'];
// We have no type safety in our tuple for indexes 3+
ourTuple.push('Something new and wrong');
console.log(ourTuple);
亲自试一试 »

您会看到新的 valueTuples 仅具有强定义的初始值类型:

示例

// define our readonly tuple
const ourReadonlyTuple: readonly [number, boolean, string] = [5, true, 'The Real Coding God'];
// throws error as it is readonly.
ourReadonlyTuple.push('Coding God took a day off');
亲自试一试 »

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

如果您在使用过 React 之前就很可能使用过元组。

useState返回值的元组和 setter 函数。

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

由于结构的原因,我们知道列表中的第一个值将是某种值类型,在本例中为 astring和第二个值afunction



命名元组

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

示例

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

命名元组为我们的指数值所代表的内容提供更多背景信息。


解构元组

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

示例

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

要回顾解构,请检查一下这里


TypeScript 练习

通过练习测试一下

练习:

值类型的顺序对于元组来说并不重要:


        

开始练习