On this page

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');

如果你曾经使用过 React,那么你很可能使用过元组。 useState返回一个值元组和一个 setter 函数。 const [firstName, setFirstName] = useState('Dylan')是一个常见的例子。 由于结构的原因,我们知道列表中的第一个值将是某种值类型(在本例中为 a )string,第二个值是 a function


命名元组

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

例子

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

命名元组为我们的索引值所代表的内容提供了更多的上下文。


解构元组

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

例子

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