定数を に実装したいのはclass
、コード内で定数を配置するのが理にかなっているからです。
これまで、静的メソッドを使用して次の回避策を実装してきました。
class MyClass {
static constant1() { return 33; }
static constant2() { return 2; }
// ...
}
プロトタイプをいじる可能性があることは知っていますが、多くの人はこれを推奨しません。
ES6 クラスで定数を実装するより良い方法はありますか?
ベストアンサー1
次のようなことが考えられます:
モジュールconst
から をエクスポートします。ユースケースに応じて、次の操作を実行できます。
export const constant1 = 33;
そして必要に応じてモジュールからインポートします。または、静的メソッドのアイデアに基づいて、static
アクセサを取得する:
const constant1 = 33,
constant2 = 2;
class Example {
static get constant1() {
return constant1;
}
static get constant2() {
return constant2;
}
}
そうすれば、括弧は不要になります。
const one = Example.constant1;
そして、おっしゃるとおり、 a はclass
関数の単なる構文糖なので、次のように書き込み不可のプロパティを追加できます。
class Example {
}
Object.defineProperty(Example, 'constant1', {
value: 33,
writable : false,
enumerable : true,
configurable : false
});
Example.constant1; // 33
Example.constant1 = 15; // TypeError
次のようなことができれば良いかもしれません:
class Example {
static const constant1 = 33;
}
しかし残念なことに、これはクラスプロパティ構文ES7 提案にのみ含まれており、それでもconst
プロパティへの追加は許可されません。