-
-
Notifications
You must be signed in to change notification settings - Fork 119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GuildFeature is not a two-way enum #583
Comments
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 👍 |
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.
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:
The text was updated successfully, but these errors were encountered: