類型化數(shù)組
元組(Tuple)是一個類型化數(shù)組仔蝌,每個索引都有預定義的長度和類型荒吏。
元組很好敛惊,因為它們允許數(shù)組中的每個元素都是已知類型的值绰更。
要定義元組,請指定數(shù)組中每個元素的類型:
// 定義元組
let ourTuple: [number, boolean, string]
// 正確初始化
ourTuple = [6, false, 'I.O']
正如你所看到的特恬,我們有一個數(shù)字徐钠,布爾值和一個字符串。但如果我們試圖將它們設置為錯誤的順序會發(fā)生什么:
let ourTuple: [number, boolean, string]
// 初始化錯誤會引發(fā)錯誤
ourTuple = [false, 'I.O', 6]
即使我們有一個 boolean
、string
和 `number衡奥,但順序在元組中很重要远荠,并且會拋出一個錯誤。
只讀元組
一個好的做法是將元組設置為 readonly
譬淳。
元組僅具有用于初始值的強定義類型:
let ourTuple: [number, boolean, string] = [6, false, 'I.O']
// 索引 3 的元組中沒有類型安全性
ourTuple.push('O.O')
console.log(ourTuple) // [6, false, 'I.O', 'O.O']
您可以看到瘦赫,新的 valueTuple 僅具有針對初始值的強定義類型:
// 定義只讀元組
const ourReadonlyTuple: readonly [number, boolean, string] = [6, true, 'I.O']
// 拋出錯誤蛤迎,因為它是只讀的。
ourReadonlyTuple.push('O.O') // type error
命名元組
命名元組允許我們?yōu)槊總€索引處的值提供上下文替裆。
const graph: [x: number, y: number] = [55.2, 41.3]
命名元組為索引值表示的內(nèi)容提供了更多上下文。
解構元組
由于元組是數(shù)組辆童,我們也可以對它們進行分解。
const graph: [number, number] = [55.2, 41.3]
const [x, y] = graph