TypeScriptで読み取り専用の配列ReadonlyArrayがある

TypeScriptで読み取り専用の配列ReadonlyArray<T>がある

TypeScriptで配列宣言をするには[]で簡単に宣言もできますが、Array<T>を使うこともできます。

で、最近知ったんですけど読み取り専用のReadonlyArray<T>っていう型もあります。

普通に宣言するだけです。

const arr1:ReadonlyArray<number> = [1,2,3];
arr1[0] = 5;// コンパイルエラーとなる
let arr2:Array<number> = [0,0,0];
arr2 = arr1;// これもコンパイルエラーとなる
arr2 = arr1 as number[];// ただし、型アサーションすればokay

これで配列の各要素に代入することもできなくなります。

配列に代入することもpushプロパティがないためにコンパイルエラーとなるようです。

型アサーションして代入すればコンパイルは通るので抜け道はあるようです。

参考サイト

TypeScriptで読み取り専用の配列ReadonlyArray<T>がある

コメント

タイトルとURLをコピーしました