Adding support for enums
Michael J. Ryan
tracker1 at gmail.com
Sun Jun 10 03:26:21 UTC 2018
Just use symbols for your action type
On Sat, Jun 9, 2018, 14:21 Doug Wade <douglas.b.wade at gmail.com> wrote:
> Hello friends!
>
> I had a bug the other day on my team. We use redux <https://redux.js.org> to
> manage the state on our application <https://resumes.indeed.com>, which
> is maintained by a large team. In Redux, there are actions, which are
> strings, that get passed to a reducer, which mutates the states. My
> coworker and I inadvertently added the same action name, "LOADING" on the
> same page, but in two different files. This led to a bug when both my
> modal and his search results would be loading at the same time, but since
> they were never both visible, we didn't catch the bug. My coworker
> refactored his feature, and broke my feature, such that rather than
> displaying a spinner, we went straight to an empty results page, even when
> there were results.
>
> In other languages, like the language I use most at work, Java, we would
> instead use a language construct called an enum
> <https://en.wikipedia.org/wiki/Enumerated_type> in this situation so that
> the two different sets of actions weren't equal to each other. I did some
> research into some previous discussions on this
> <https://esdiscuss.org/topic/enums> topic, and it seems like the
> discussion has been broadly in favor of it. I also noted that enum is a reserved
> keyword
> <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords>,
> which indicates some intention to add enums to the language.
>
> As such, I've spent some time working on a proposal
> <https://github.com/doug-wade/proposal-enum-definitions> for adding enums
> to ECMAScript. It is very heavily based on the work by rauschma
> <https://github.com/rauschma/enums/blob/master/enums.js>, stevekinney
> <https://github.com/stevekinney/ecmascript-enumerations> and rwaldron
> <https://github.com/rwaldron/proposal-enum-definitions>. I wasn't sure if
> I was using all the right words when writing the proposal, so to help
> express myself better, I also spent some time writing a babel plugin
> <https://github.com/doug-wade/babel/tree/babel-plugin-proposal-enum> that
> uses a polyfill <https://github.com/doug-wade/enum-polyfill> against
> which I've written a small test suite
> <https://github.com/doug-wade/enum-unit-tests> (if you would like to run
> them, you'll need to link the polyfill and the babel plugin into the
> tests). Please do not take these as any indication of "done-ness", I wrote
> them to understand how I would expect an enum in javascript to behave, and
> am willing and eager to make changes as I get suggestions. I do, however,
> feel I have done as much as I can on my own, and would like help in
> considering the proposal, especially whether it contains any footguns,
> undefined behavior, or things that would be surprising to newer developers,
> and helping me identify what work is to be done to make this a "real"
> proposal.
>
> All the best,
> Doug Wade
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20180609/f3f10ac8/attachment.html>
More information about the es-discuss
mailing list