I want to implement constants in a class
, because that's where it makes sense to locate them in the code.
So far, I have been implementing the following workaround with static methods:
class MyClass {
static constant1() { return 33; }
static constant2() { return 2; }
// ...
}
I know there is a possibility to fiddle with prototypes, but many recommend against this.
Is there a better way to implement constants in ES6 classes?
Best Answer
Here's a few things you could do:
Export a
const
from the module. Depending on your use case, you could just:And import that from the module where necessary. Or, building on your static method idea, you could declare a
static
get accessor:That way, you won't need parenthesis:
Babel REPL Example
Then, as you say, since a
class
is just syntactic sugar for a function you can just add a non-writable property like so:It may be nice if we could just do something like:
But unfortunately this class property syntax is only in an ES7 proposal, and even then it won't allow for adding
const
to the property.