Neverending Pile of Messages

    @nolwenture/enumify

    1.0.3 • Public • Published

    Why this fork exists?

    This simply removes the outdated es2015 preset from bable requirements

    Enumify

    A JavaScript library for enums. To be used by transpiled ES6 (e.g. via Babel).

    The approach taken by Enumify is heavily inspired by Java enums.

    The basics

    Install:

    npm install enumify

    Use:

    import {Enum} from 'enumify';
     
    class Color extends Enum {}
    Color.initEnum(['RED', 'GREEN', 'BLUE']);
     
    console.log(Color.RED); // Color.RED
    console.log(Color.GREEN instanceof Color); // true
     
    new Color();
        // Error: Enum classes can’t be instantiated

    Properties of enum classes

    Enums get a static property enumValues, which contains an Array with all enum values:

    for (const c of Color.enumValues) {
        console.log(c);
    }
    // Output:
    // Color.RED
    // Color.GREEN
    // Color.BLUE

    The inherited tool method enumValueOf() maps names to values:

    console.log(Color.enumValueOf('RED') === Color.RED); // true
    true

    Properties of enum values

    Enumify adds two properties to every enum value:

    • name: the name of the enum value.

      > Color.BLUE.name
      'BLUE'
    • ordinal: the position of the enum value within the Array enumValues.

      > Color.BLUE.ordinal
      2

    Adding properties to enum values

    initEnum() also accepts an object as its parameter. That enables you to add properties to enum values:

    class TicTacToeColor extends Enum {}
     
    // Alas, data properties don’t work, because the enum
    // values (TicTacToeColor.X etc.) don’t exist when
    // the object literals are evaluated.
    TicTacToeColor.initEnum({
        O: {
            get inverse() { return TicTacToeColor.X },
        },
        X: {
            get inverse() { return TicTacToeColor.O },
        },
    });
     
    console.log(TicTacToeColor.O.inverse); // TicTacToeColor.X

    More information

    • The directory test/ contains examples.

    Keywords

    none

    Install

    npm i @nolwenture/enumify

    DownloadsWeekly Downloads

    2

    Version

    1.0.3

    License

    MIT

    Unpacked Size

    7.21 kB

    Total Files

    4

    Last publish

    Collaborators

    • mika.kytojoki
    • antti.vikman
    • zanitius
    • it_nolwenture