TypeScriptではconstでオブジェクトを宣言した場合でもプロパティの書き換えは可能

TypeScriptでconstで宣言したオブジェクトのプロパティの書き換え

TypeScriptでは、constで宣言したオブジェクト自体は再代入できませんが、そのプロパティは書き換えることができます。
例えば以下のようにします。

const obj = {
    name: 'John',
    age: 30
};

obj.age = 31; // プロパティの書き換えは可能

console.log(obj); // { name: 'John', age: 31 }

これにより、constで宣言したオブジェクトobjのageプロパティを書き換えることができます。
しかし、obj自体に別のオブジェクトを代入することはできません。

オブジェクトを読み取り専用にするためにはas constを使うと便利

TypeScriptにおいて、オブジェクトを読み取り専用にするためにas constを使用することができます。
これにより、オブジェクトのプロパティが再代入不可能なリテラル型になります。

例を示します。

const obj = {
    name: 'John',
    age: 30
} as const;

// obj.name = 'Jane'; // エラー: 'name' プロパティは読み取り専用です
// obj.age = 31;      // エラー: 'age' プロパティは読み取り専用です

console.log(obj.name); // 'John'
console.log(obj.age);  // 30

この例では、objをas constで宣言することで、nameとageプロパティは読み取り専用になります。
そのため、後からこれらのプロパティの値を変更しようとすると、TypeScriptはエラーを発生させます。