Basically, you can use them if you want to, but every single case where you would use them would be better served with a union type.
TypeScript
To add, turning everything into an enum can make the code nearly unreadable and hard to work with. This isn't Rust, and there's no performance gain for using enums over string unions.
Or by an enum class.
Another good option is const objects, it's a recommended alternative in the official docs. https://www.typescriptlang.org/docs/handbook/enums.html#objects-vs-enums
Use enums when you need enums. Don't use them when you don't need them. What's the issue?
You probably don't ever need enums since the const keyword was added after enums and const objects handle enum use cases unions don't.
You mean const assertions. Well, the thing is that const assertions are not enums. They don't handle enum use cases in any way.
I'm talking about if you want an object syntax for accessing constant types to act as an enum https://www.typescriptlang.org/docs/handbook/enums.html#objects-vs-enums
At work, when I was helping with some frontend stuff, we used object literals.
const DIRECTIONS = {
UP: "UP",
DOWN: "DOWN"
} as const;
type DIRECTIONS = typeof DIRECTIONS[keyof typeof DIRECTIONS];
Taken from option 2 in this blog post. https://maxheiber.medium.com/alternatives-to-typescript-enums-50e4c16600b1`___`
This is, in my opinion, the absolute best way to do it
That's what the typescript official docs recommend as an alternative too
https://www.typescriptlang.org/docs/handbook/enums.html#objects-vs-enums
The const keyword was added after enums. I doubt enums would exist if the feature was added earlier.
Yes