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 };

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント