クラスのreadonly修飾子
TypeScriptでは、フィールドにreadonly修飾子をつけると、そのフィールドを読み取り専用にできます。
読み取り専用フィールドは、コンストラクタかフィールド初期化子でのみ値を代入できます。
typescript
class Octopus {readonly name: string;readonly legs = 8; // フィールド初期化子での代入はOKconstructor() {this.name = "たこちゃん"; // コンストラクターでの代入はOK}}
typescript
class Octopus {readonly name: string;readonly legs = 8; // フィールド初期化子での代入はOKconstructor() {this.name = "たこちゃん"; // コンストラクターでの代入はOK}}
読み取り専用フィールドは、再代入しようとするとコンパイルエラーになります。
typescript
const octopus = new Octopus();octopus.legs = 16;// ^^^^ Cannot assign to 'legs' because it is a read-only property.(2540)
typescript
const octopus = new Octopus();octopus.legs = 16;// ^^^^ Cannot assign to 'legs' because it is a read-only property.(2540)
メソッド内の処理であっても、読み取り専用フィールドへの再代入は許されません。
typescript
class Octopus {readonly name = "たこちゃん";setName(newName: string): void {this.name = newName;// ^^^^ Cannot assign to 'name' because it is a read-only property.(2540)}}
typescript
class Octopus {readonly name = "たこちゃん";setName(newName: string): void {this.name = newName;// ^^^^ Cannot assign to 'name' because it is a read-only property.(2540)}}