Why Typescript enums kinda suck, actually.
Typescript enums have been a bane of good development in a lot of my cases.
Take the following enum for example:
enum Result {
Ok,
Err
}
In reality, the decompiled typescript results in the following:
var Result;
(function (Result) {
Result[(Result["Ok"] = 0)] = "Ok";
Result[(Result["Err"] = 1)] = "Err";
})(Result || (Result = {}));
There’s so much weirdness in this.
Let’s try and parse this.
- With the
var
keyword, it attaches a variable calledResult
to the global scope[1] - An IIFE is invoked with
Result
as a paremeter Result
is given the value ofResult
or{}
Result
is given the values ofResult["Ok"] = 0
, which would give:
[
{"Ok": 0},
{"Err": 1}
]
After invoking IIFE, we now are left with the following:
var Result = {}
Result["Ok"] = 0
Result["Err"] = 1
As Result
is always given the Symbol.Iterator
type, we can loop over Result
like so:
Object.entries(Result)
// Returns…
{
Ok: 0,
0: “Ok”,
Err: 1,
1: “Err”,
}
Like, just why would you do this. You’re just left with a bunch of repeating indexes which are, awkward to navigate when actually using these in code.
It’s why I almost never use them and just use a Dicitionary
in code instead, as this allows you to join and implement keys from other dictionaries, extend your types and are generally just far more powerful.
Go back
Backlinks
No backlinks found.