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 か所にのみ存在するという利点があります。