TypeScriptのconstはミュータブルなのでinterfaceでイミュータブルにする

TypeScriptのconstはミュータブルなのでinterfaceでイミュータブルにする

TypeScriptのconstは再代入ができないだけであって、オブジェクトをconstにしても、そのプロパティまではイミュータブルにはなりません。

const obj:{x:number,y:number} = { x: 10, y: 20 };
obj.x = 12;
obj.y = 15;
// obj = {}; // 再代入はコンパイルエラー

インターフェースを使って各プロパティをreadonlyにすることでプロパティもイミュータブルにすることができます。

interface AAA {
  readonly x:number,
  readonly y:number
}

これでxもyもreadonlyなので以下のように書き換えます。

const obj:AAA = { x: 10, y: 20 };
obj.x = 12; // readonlyなのでエラー
obj.y = 15; // readonlyなのでエラー
// obj = {}; // 再代入はコンパイルエラー

これでイミュータブルにすることができます。

というか、インタフェース定義するのも面倒なら以下のように記述すればイミュータブルになります。

const obj:{readonly x:number,readonly y:number} = { x: 10, y: 20 };

TypeScriptのconstはイミュータブルなのでinterfaceでイミュータブルにする

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

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