TypeScript 元組類型

TypeScript 語言中,數組中的元素通常只能是由相同數據類型組成(any[] 除外),若是咱們想要存儲不一樣類型的元素,則可使用元組。數組

TypeScript 中的元組(Tuple)從外形上來看和數組相差很少, 可是元組中容許存儲不一樣類型的元素,數組中的元素必須是相同的類型。url

聲明元組

聲明元組的語法:.net

let tuple_name = [value1,value2,value3,…value n]
示例:

例如聲明一個由數字類型、字符串類型、布爾類型構成的元素:code

let tup1:[number, string, boolean] = [1, 'a', true];
console.log(tup1);

編譯成 JavaScript 代碼:blog

var tup1 = [1, 'a', true];
console.log(tup1); // [ 1, 'a', true ]

輸出:索引

[ 1, 'a', true ]

這樣聲明的元組,元素的類型必須一一對應,例如右邊中括號內第一個元素必須是 number 類型的數據, 第二個元素必須是 string 類型的數據,第三個必須是 boolean 類型,若是沒有一一對應,則會報錯。ip

示例:

下圖中是一段示例代碼,當元素與對應位置的數據類型沒有一一對應,會產生錯誤: element

訪問元組

和數組同樣,元組中元素也可使用索引來訪問,元組中的索引值一樣從 0 開始,第一個元素爲 0,第二個爲 1,以此類推第 n 個爲 n-1字符串

示例:

經過索引訪問一個元素時,能夠獲得這個元素的值:get

let tup1: [string, number, number] = ['xkd', 1, 3];
console.log("第三個元素的值爲:" +  tup1[2]);
console.log("第三個元素的類型爲:" + typeof tup1[2]);

編譯爲 JavaScript 代碼:

var tup1 = ['xkd', 1, 3];
console.log("第三個元素的值爲:" + tup1[2]);
console.log("第三個元素的類型爲:" + typeof tup1[2]);

輸出:

第三個元素的值爲:3
第三個元素的類型爲:number

須要注意的是,在訪問元組中的元素時,不能夠越界訪問。例如上面數組中只有三個元素,那麼若是咱們訪問索引爲 3 的元素:

let tup1: [string, number, number] = ['xkd', 1, 3];
console.log(tup1[3]);

輸出:

Tuple type '[string, number, number]' of length '3' has no element at index '3'.

可選元素類型

咱們在聲明一個元組時,能夠在元素類型後綴一個問號 來講明元素是可選的。

示例:

下面元組中,第二個元素和第三個元素爲可選元素:

let tup1: [string, number?, number?];
tup1 = ['a'];
tup1 = ['a', 1];
tup1 = ['a', 1, 3]

有一點很重要,就是可選元素類型必須在必選元素類型後面。也就是說,若是一個元素類型後面後綴了一個問號 ,那麼這個元素以後的全部元素類型都要後綴一個問號。

示例:

下圖中第二個元素爲可選元素,第三個元素若是不是可選元素,就會致使報錯:

元組操做

TypeScript 中元組也支持各類操做,例如咱們可使用 push() 方法向元組添加元素,使用pop() 方法移除元組中的最後一個元素。其實使用起來就和數組中相似。

示例:

首先聲明一個元組:

let mytup:[number, number, string, string] = [7, 36, 'summer', 'xkd'];

而後咱們可使用 push() 方法向這個元組中添加新的元素(建議最好不要這樣作),以下所示:

let mytup:[number, number, string, string] = [7, 36, 'summer', 'xkd'];
mytup.push('mark');
console.log(mytup);

// 輸出:[ 7, 36, 'summer', 'xkd', 'mark' ]

也可使用 pop() 方法刪除元組中最後一個元素:

mytup.pop();
console.log(mytup);

// 輸出:[ 7, 36, 'summer' ]

更新或修改元組元素

元組是可變的,這表示咱們能夠更新或更改元組中的元素值,要修改元組中的元素,須要用到索引和賦值運算符 =

示例:

例如將元組中索引爲 1 的元素值修改成'aaa':

let mytup:[number, string] = [7, 'xkd'];
mytup[1] = 'aaa';
console.log(mytup);

編譯成 JavaScript 代碼:

var mytup = [7, 'xkd'];
mytup[1] = 'aaa';
console.log(mytup);

輸出:

[ 7, 'aaa' ]

解構元組

咱們能夠解構元組中的元素,例如:

let mytup:[number, string, boolean] = [7, 'summer', true];
let [a, b, c] = mytup;
console.log(a);
console.log(b);
console.log(c);

編譯成 JavaScript 代碼:

var mytup = [7, 'summer', true];
var a = mytup[0], b = mytup[1], c = mytup[2];
console.log(a);
console.log(b);
console.log(c);

輸出:

7
summer
true

若是咱們不須要解構元組中的所有元素,就能夠像下面這樣解構:

let mytup:[number, string, boolean] = [7, 'summer', true];
let [a, ...arg] = mytup;
console.log(a);
console.log(arg);

編譯成 JavaScript 代碼:

var mytup = [7, 'summer', true];
var a = mytup[0], arg = mytup.slice(1);
console.log(a);
console.log(arg);

輸出:

7
[ 'summer', true ]

動手練習

  1. 請定義一個元組,這個元組中第一個元素爲字符串類型,第二個元素爲布爾類型,第三個元素爲可選的數字類型?
  2. 請將下面這個元組中第三個元素的值修改成 「可樂」?
let mytup: [string, number, string, boolean] = ['牛肉', 100, '雪碧', true];

連接:https://www.9xkd.com/

相關文章
相關標籤/搜索