2020-03-17
1611
#typescript
Aaron Powell
15368
Mar 17, 2020 ⋅ 5 min read

Why TypeScript enums suck

Aaron Powell I’m a Developer Advocate at Microsoft. My area of specialty is frontend web development focusing on architecture around SPA and other UI-heavy web applications.

Recent posts:

7 Common CSS Navigation Menu Mistakes And How To Fix Them

7 common CSS navigation menu mistakes and how to fix them

Navigation menu errors are common, even for seasoned developers. Learn seven common navigation menu errors and how to solve them using CSS.

Temitope Oyedele
Jun 13, 2025 ⋅ 6 min read
Comparing the top 5 React toast libraries

Comparing the top React toast libraries [2025 update]

Compare the top React toast libraries for when it’s more trouble than it’s worth to create your own custom toast components.

Nefe Emadamerho-Atori
Jun 13, 2025 ⋅ 16 min read
Comparison between TanStack Start and Next.js — two modern full-stack React frameworks with different architectural approaches.

TanStack Start vs. Next.js: Choosing the right full-stack React framework

TanStack Start vs. Next.js: both are powerful full-stack React frameworks, but they take fundamentally different approaches to architecture, routing, and developer experience. This guide breaks down their core features from SSR and data fetching to TypeScript support and deployment, to help you choose the right tool for your next React project.

Abiola Farounbi
Jun 12, 2025 ⋅ 8 min read
Angular v20 might seem boring…here are 5 reasons it’s not

Angular v20 might seem boring — Here are 6 reasons it’s not

While it may seem like a maintenance update, Angular v20 is packed with practical, production-ready upgrades that will enable us to build apps faster and with more confidence.

Yan Sun
Jun 12, 2025 ⋅ 8 min read
View all posts

2 Replies to "Why TypeScript enums suck"

  1. I’d prefer them over enums every single time. They cover all the regular cases for enums, and the ones they don’t cover, there you shouldn’t use enums either. I’m talking about doing math with enums.
    Wether it’s bit-flags or stuff like `if(day < DaysOfWeek.Saturday)…`.

    Additionally they are nice and readable when I have to deal with JSON or a Database. When I'm greeted by the day "Monday", "Tuesday", "Wednesday" instead of 1,2,3.

    And if someone now thinks, counting down the days of the week is trivial, tell me: what's the first value in your enum? 1? Or did you start at 0 so that the values double as indices over an array of localized strings? And what is the first Entry? Sunday or Monday? You wrote Sunday, in my area that's the last day of the week. And all that just with something as "trivial" as days of week. Now imagine a somewhat more abstract collection of options and you tell me which numeric value translates to what readable option in that enum.

Leave a Reply