TypeScript is not just about validation, It's also about structure and today, let's talk about using ENUMS to save your team unnecessary hours of d...
For further actions, you may consider blocking this person and/or reporting abuse
I like using enums too for objects.
TS-team however, recommends we use objects instead, like:
enums have some type-safety issues: dev.to/ivanzm123/dont-use-enums-in...
This is a good take
No, use string unions instead.
Enums introduce a runtime construct and typescript should only be a compile-time tool.
Unions gives you all the type safety and -- for libraries -- works for JavaScript (i.e. non typescript) projects flawlessly.
I get what you mean, but what you say is wrong: It is a compile-time tool, or better stated, a transpilation tool since JS is not compiled by today's tools. Today's tools transpile, bundle and minify, but don't compile.
What you meant to say is that TS should not "write extra code", or at least this is what I think you meant. If I'm correct, that's also wrong: TypeScript, depending on the target version of ECMAScript, will generate code accordingly. By design, TS is meant to support as much as possible all the newest syntax ahead of time, and is ready to shim on the fly.
Finally, there is no absolute "best" enum. String unions are nice, but numeric enums are great:
Came here to say this
Enums in typescript are not great. Most of the time when you're thinking about using enums, try using string literal instead:
This provides same level of type safety, same intellisence, but less verbose and easier to use
I would do it so
Enums are horrible, considering the alternatives that typescript provides
Aside from the other issues mentioned, it's often very useful to use an object to store additional metadata that may be needed when using the options. You can use
keyof typeof
to extract the keys into a type (string union) to be used throughout your code.For example:
I used to use enum last time, but there were some issues that I faced.
Since then have been using plain object
As my previous discussion on the topic shows, enums have their uses and limitations and neither of their currently available replacements is very satisfying. Let's hope that there will be a native enums proposal to TC39 that fixes these issues.
Let's talk about NOT using enums in TS
wordman.dev/blog/typescript-enums
If there would be easy fix for this in JS 🤔
Otherwise I tend to agree that enums are obsolete
typescriptlang.org/play/?#code/KYO...
Sometimes it's better to use Types for this kind of stuff because enums generate a lot of unnecessary transpired code (not a big issue if you don't have too many, tho) and because types will more easily resonate with people still using strings for this kind of stuff. It's still forcing everyone to use the correct string too.
Enums is almost an useless feature in TS and you hardly wrote about it
Enums are bad in ts they were not made for ts they are not even type safe the better alternative would be to use objects or union types
Totally agree. nice explanation.
I typically follow the recommendation of Matt here:
https://youtu.be/jjMbPt_H3RQ?t=313&si=dxR47C3MgaB4bt43