Aquí hay algunas cosas que puedes hacer:
Exportar a const
desde el módulo . Dependiendo de su caso de uso, podría simplemente:
export const constant1 = 33;
E importe eso desde el módulo cuando sea necesario. O, basándose en su idea del método estático, puede declarar un static
get accessor :
const constant1 = 33,
constant2 = 2;
class Example {
static get constant1() {
return constant1;
}
static get constant2() {
return constant2;
}
}
De esa manera, no necesitará paréntesis:
const one = Example.constant1;
Ejemplo REPL de Babel
Luego, como usted dice, dado que a class
es solo azúcar sintáctico para una función, puede agregar una propiedad no escribible de esta manera:
class Example {
}
Object.defineProperty(Example, 'constant1', {
value: 33,
writable : false,
enumerable : true,
configurable : false
});
Example.constant1; // 33
Example.constant1 = 15; // TypeError
Puede ser bueno si pudiéramos hacer algo como:
class Example {
static const constant1 = 33;
}
Pero desafortunadamente, esta sintaxis de propiedad de clase solo está en una propuesta de ES7, e incluso entonces no permitirá agregarla const
a la propiedad.