Unlike most TypeScript features, enums generate additional JavaScript code at runtime. Let's see what happens when we compile this enum (we'll talk about how to compile manually later):
enum Class {
Rogue,
Mage,
Warrior,
Priest,
}
We get a JavaScript object that looks like this:
var Class;
(function (Class) {
Class[(Class["Rogue"] = 0)] = "Rogue";
Class[(Class["Mage"] = 1)] = "Mage";
Class[(Class["Warrior"] = 2)] = "Warrior";
Class[(Class["Priest"] = 3)] = "Priest";
})(Class || (Class = {}));
This generated code creates the bidirectional mapping that we talked about before:
Class["Rogue"] = 0Class[0] = "Rogue"Strings compile in a similar way:
enum Class {
Rogue = "Rogue",
Mage = "Mage",
Warrior = "Warrior",
Priest = "Priest",
}
Compiles to:
var Class;
(function (Class) {
Class["Rogue"] = "Rogue";
Class["Mage"] = "Mage";
Class["Warrior"] = "Warrior";
Class["Priest"] = "Priest";
})(Class || (Class = {}));
String enums do not support reverse mapping - the compiled JavaScript only maps from name to string value, not the other way around.
Support.ai uses custom numeric error codes to track different kinds of internal errors. These codes are logged across systems, but for debugging, we want to display more information about the error.
getErrorLabel. It should take a error code number as input and return a string.InternalErrors enum to get the error name and return a string in this format:CODE: NAMECODE and NAME replaced by the actual error code and error name.InternalErrors enum, it should return in the same format but with the error name "Unknown error".