Aqui estão algumas coisas que você pode fazer:
Exporte um const
do módulo . Dependendo do seu caso de uso, você pode apenas:
export const constant1 = 33;
E importe isso do módulo sempre que necessário. Ou, desenvolvendo sua ideia de método estático, você pode declarar um static
acessador get :
const constant1 = 33,
constant2 = 2;
class Example {
static get constant1() {
return constant1;
}
static get constant2() {
return constant2;
}
}
Dessa forma, você não precisará de parênteses:
const one = Example.constant1;
Exemplo de Babel REPL
Então, como você diz, como a class
é apenas um açúcar sintático para uma função, você pode adicionar uma propriedade não gravável da seguinte forma:
class Example {
}
Object.defineProperty(Example, 'constant1', {
value: 33,
writable : false,
enumerable : true,
configurable : false
});
Example.constant1; // 33
Example.constant1 = 15; // TypeError
Pode ser bom se pudéssemos fazer algo como:
class Example {
static const constant1 = 33;
}
Infelizmente, porém, essa sintaxe de propriedade de classe está apenas em uma proposta do ES7 e, mesmo assim, não permitirá a adição const
à propriedade.