クラス定数を実装するには?質問する

クラス定数を実装するには?質問する

TypeScript では、constキーワードを使用してクラス プロパティを宣言することはできません。これを行うと、コンパイラで「クラス メンバーに 'const' キーワードを含めることはできません」というエラーが発生します。

プロパティを変更してはならないことをコードで明確に示す必要があると感じています。プロパティが宣言された後に新しい値を割り当てようとすると、IDE またはコンパイラがエラーになるようにしたいのですが、皆さんはこれをどうやって実現していますか?

現在、読み取り専用プロパティを使用していますが、もっと良い方法があるのではないかと思います。

get MY_CONSTANT():number {return 10};

私はTypescript 1.8を使用しています。何か提案はありますか?

PS: 現在Typescript 2.0.3を使用しているので、デイビッドの答え

ベストアンサー1

TypeScript 2.0にはreadonly修飾子:

class MyClass {
    readonly myReadOnlyProperty = 1;

    myMethod() {
        console.log(this.myReadOnlyProperty);
        this.myReadOnlyProperty = 5; // error, readonly
    }
}

new MyClass().myReadOnlyProperty = 5; // error, readonly

これはコンストラクタ内での割り当てが許可されているため、厳密には定数ではありませんが、おそらく大きな問題にはなりません。

代替ソリューション

static別の方法としては、次のキーワードを使用する方法がありますreadonly

class MyClass {
    static readonly myReadOnlyProperty = 1;

    constructor() {
        MyClass.myReadOnlyProperty = 5; // error, readonly
    }

    myMethod() {
        console.log(MyClass.myReadOnlyProperty);
        MyClass.myReadOnlyProperty = 5; // error, readonly
    }
}

MyClass.myReadOnlyProperty = 5; // error, readonly

これには、コンストラクター内で割り当てることができず、 1 か所にのみ存在するという利点があります。

おすすめ記事