元組

數組合並了相同型別的物件,而元組(Tuple)合併了不同型別的物件。

元組起源於函式程式語言(如 F#),這些語言中會頻繁使用元組。

簡單的例子

定義一對值分別為 stringnumber 的元組:

let tom: [string, number] = ['Tom', 25];

當賦值或訪問一個已知索引的元素時,會得到正確的型別:

let tom: [string, number];
tom[0] = 'Tom';
tom[1] = 25;
tom[0].slice(1);
tom[1].toFixed(2);

也可以只賦值其中一項:

let tom: [string, number];
tom[0] = 'Tom';

但是當直接對元組型別的變數進行初始化或者賦值的時候,需要提供所有元組型別中指定的項。

let tom: [string, number];
tom = ['Tom', 25];
let tom: [string, number];
tom = ['Tom'];
// Property '1' is missing in type '[string]' but required in type '[string, number]'.

越界的元素

當新增越界的元素時,它的型別會被限制為元組中每個型別的聯合型別:

let tom: [string, number];
tom = ['Tom', 25];
tom.push('male');
tom.push(true);
// Argument of type 'true' is not assignable to parameter of type 'string | number'.

參考