元組
類型化數(shù)組
元組是類型化的數(shù)組,具有預(yù)定義長(zhǎng)度,且每個(gè)索引都有對(duì)應(yīng)的類型。
元組非常有用,因?yàn)樗鼈冊(cè)试S數(shù)組中的每個(gè)元素都是已知類型的值。
要定義一個(gè)元組,需要指定數(shù)組中每個(gè)元素的類型:
實(shí)例
// 定義我們的元組 let ourTuple: [number, boolean, string]; // 正確初始化 ourTuple = [5, false, 'Coding God was here'];
如您所見,我們有一個(gè)數(shù)字、一個(gè)布爾值和一個(gè)字符串。但是,如果我們嘗試以錯(cuò)誤的順序設(shè)置它們,會(huì)發(fā)生什么呢:
實(shí)例
// 定義我們的元組 let ourTuple: [number, boolean, string]; // 初始化不正確會(huì)引發(fā)錯(cuò)誤 ourTuple = [false, 'Coding God was mistaken', 5];
盡管我們有 boolean
、string
和 number
,但在我們的元組中,順序很重要,否則會(huì)拋出錯(cuò)誤。
只讀元組
一個(gè)好的做法是將您的元組設(shè)置為只讀。
元組只對(duì)初始值有嚴(yán)格定義的類型:
實(shí)例
// 定義我們的元組 let ourTuple: [number, boolean, string]; // 正確初始化 ourTuple = [5, false, 'Coding God was here']; // 對(duì)于索引 3+,我們的元組中沒有類型安全性 ourTuple.push('Something new and wrong'); console.log(ourTuple);
您會(huì)看到新的元組只對(duì)初始值有嚴(yán)格定義的類型:
實(shí)例
// 定義我們的只讀元組 const ourReadonlyTuple: readonly [number, boolean, string] = [5, true, 'The Real Coding God']; // 拋出錯(cuò)誤,因?yàn)樗侵蛔x的。 ourReadonlyTuple.push('Coding God took a day off');
要了解有關(guān)只讀等訪問修飾符的更多信息,請(qǐng)轉(zhuǎn)到我們關(guān)于它們的部分:TypeScript 類。
如果您以前使用過 React,那么您很可能已經(jīng)使用過元組。
useState
返回一個(gè)由值和設(shè)置函數(shù)組成的元組。
const [firstName, setFirstName] = useState('Dylan')
是一個(gè)常見的例子。
由于結(jié)構(gòu)原因,我們知道列表中的第一個(gè)值將是某種值類型(在本例中為 string
),而第二個(gè)值是 function
。
命名元組
命名元組允許我們?yōu)槊總€(gè)索引處的值提供上下文。
實(shí)例
const graph: [x: number, y: number] = [55.2, 41.3];
命名元組允許我們?yōu)槊總€(gè)索引處的值提供上下文。
解構(gòu)元組
由于元組是數(shù)組,因此我們也可以對(duì)它們進(jìn)行解構(gòu)。
實(shí)例
const graph: [number, number] = [55.2, 41.3]; const [x, y] = graph;
要回顧解構(gòu),請(qǐng)單擊此處。