TypeScript の readonly

概要: このチュートリアルでは、クラスのプロパティを不変のプロパティとしてマークするために TypeScript の readonly アクセス修飾子を使用する方法について説明します。

TypeScript には readonly 修飾子が用意されており、クラスのプロパティを不変にマークできます。readonly プロパティへの代入は、次の 2 か所のいずれかでしか発生しません

  • プロパティ宣言
  • 同じクラスのコンストラクタ

プロパティを不変にマークするには、readonly キーワードを使用します。以下の例は、Person クラスに readonly プロパティを宣言する方法を示しています

class Person {
    readonly birthDate: Date;

    constructor(birthDate: Date) {
        this.birthDate = birthDate;
    }
}Code language: JavaScript (javascript)

この例では、birthdate プロパティは、Person クラスのコンストラクタで初期化される readonly プロパティです。

以下は、birthDate プロパティの再割り当てを試行していますが、エラーになります

let person = new Person(new Date(1990, 12, 25));
person.birthDate = new Date(1991, 12, 25); // Compile errorCode language: JavaScript (javascript)

エラー

Cannot assign to 'birthDate' because it is a read-only property.Code language: JavaScript (javascript)

他の アクセス修飾子 と同様に、次のようにコンストラクタで readonly プロパティの宣言と初期化を統合できます

class Person {
    constructor(readonly birthDate: Date) {
    }
}Code language: JavaScript (javascript)

readonly と const

以下は、readonlyconst の違いを示しています

readonlyconst
用途クラスのプロパティ変数
初期化宣言時または同じクラスのコンストラクタ内宣言時

概要

  • readonly アクセス修飾子を使用して、クラスのプロパティを不変にマークします。
  • readonly プロパティは、宣言の一部として、または同じクラスのコンストラクタで初期化する必要があります。
このチュートリアルは役に立ちましたか?