Skip to content
Advertisement

How can I guarantee that my enums definition doesn’t change in JavaScript?

Would the following make the objects fulfil all characteristics that enums have in JavaScript? Something like:

JavaScript

Or is there some other way I can do this?

Advertisement

Answer

Since 1.8.5 it’s possible to seal and freeze the object, so define the above as:

JavaScript

or

JavaScript

and voila! JS enums.

However, this doesn’t prevent you from assigning an undesired value to a variable, which is often the main goal of enums:

JavaScript

One way to ensure a stronger degree of type safety (with enums or otherwise) is to use a tool like TypeScript or Flow.

Quotes aren’t needed but I kept them for consistency.

Advertisement