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(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント