TypeScriptで配列の要素数を決め打ちした配列型を作るユーティリティ型です。
FixedArray<T, L>
type FixedArray<T, L extends number> =
L extends 0 ? [] : [T, ...T[]] & { length: L }
T
に要素の型を、L
に配列のサイズを指定します。
使用例
let t0: FixedArray<number, 0>
t0 = []
t0 = [1] // Error
let t1: FixedArray<number, 1>
t1 = [] // Error
t1 = [1]
t1 = [1, 2] // Error
let t2: FixedArray<number, 2>
t2 = [1] // Error
t2 = [1, 2]
t2 = [1, 2, 3] // Error
let t3: FixedArray<number, 3>
t3 = [1, 2] // Error
t3 = [1, 2, 3]
t3 = [1, 2, 3, 4] // Error
制約
この型の制約として、ミューテーションメソッドで要素数が変わってしまうと実行時エラーになります:
const t1: FixedArray<string, 1> = ['foo']
t1.pop()
t1[0].toUpperCase()
// ERR: Cannot read property 'toUpperCase' of undefined
試す
このユーティリティタイプを試したい方は、TypeScript Playgroundをご覧ください。