Open MattIPv4 opened 2 years ago
Isn't that just how enumerations work? String-valued enumerations do not return numbers in the first place.
This is outside of my power / control, this is how TS turns string enums into objects. So, sadly, can't easily add these without doing it manually. But there should be modules to easily convert snake_case to PascalCase
I'm just running this to patch it locally, rather annoying that TS is inconsistent with how enums get exported w/ strings vs numbers:
Object.entries(GuildFeature).forEach(([key, value]) => {
GuildFeature[value] = key;
});
I doubt we'd change the enums themselves but I'd be willing to merge a utility method for getting the PascalCase name š
I'm just running this to patch it locally, rather annoying that TS is inconsistent with how enums get exported w/ strings vs numbers:
This is the way it has to be. There's nothing to stop you having an enum like
enum StringEnum {
Foo = 'Bar',
Bar = 'Baz',
Baz = 'Foo'
}
and there's no way of creating a bidirectional key-to-value map when the keys and values are allowed to overlap.
I doubt we'd change the enums themselves but I'd be willing to merge a utility method for getting the PascalCase name š
Is there a significant usage case for this? Besides users wanting to use PascalCase strings for logging purposes or whatnot, but there are plenty of case converter packages in the npm ecosystem that they can use.
Please describe the problem you are having in as much detail as possible:
Many of the enums exported from discord-api-types are two-way enums, meaning that you can pass a key into the enum, and than that result back into the enum again to get the original key. This is true of the
ChannelType
enum for example, which has both the integer and string values as keys.However, the
GuildFeature
enum only has the PascalCase values as keys, with the SCREAMING_SNAKE_CASE values missing from the keys. This means that you cannot convert the snake case values back to the pascal case values using the enum.Include a reproducible code sample here, if possible:
Further details: