Jak vytvářet a používat výčty v JavaScriptu (ne TypeScript)

Tento článek vám ukáže, jak vytvářet a používat výčty v JavaScriptu. JavaScript bohužel ne zahrnout nativní podporu pro Enums, ale srovnatelné funkce můžete přidat sami.

Všimněte si, že TypeScript, jazyk, který staví na JavaScriptu, to funguje zahrnout podporu pro Enums nativně. Takže se zde díváme pouze na prostý JavaScript – nikoli na TypeScript.

Co je Výčet ?

 Výčet (Výčet erated Type) je datová struktura obsahující více hodnot. Každá hodnota je přiřazena k identifikátoru – a lze k ní přistupovat pomocí tohoto identifikátoru.

Výčet obsahovat předdefinované konstanty, u kterých se neočekává, že se změní (budou stejné při zápisu aplikace i při jejím spuštění, abyste se vždy mohli odkazovat na data ve výčtu podle stejného identifikátoru a získat stejnou hodnotu ).

Metoda JavaScript Object.freeze()

Bez nativní podpory výčtů tedy jak výčty používáme?

Vzhledem k tomu, co je Enum – neměnná sada párů klíč/hodnota, můžeme vytvořit objekt (který může obsahovat sadu párů klíč–hodnota) – a pak jej zmrazit pomocí Object.freeze (což je neměnné). Oba hlavní atributy výčtu jsou tedy splněny!

// Declare a constant called Month, containing our Enum
const Month = {
    JAN: 1,
    FEB: 2,
    MAR: 3
};

// Freeze it! It now can't be changed
Object.freeze(Month);

// Assign a value from the Enum to a variable to test it
let thisMonth = Month.MAR;
console.log(thisMonth); # Outputs 3 - the value of MAR in the Enum

// Trying to add a new member to the Enum will fail - but no error is produced.  The object is just frozen and won't be modified.
Month.APR = 4;
console.log(Month) # Will return the original frozen Month Enum - APR will not be included

Jednoduchý! Výčty mohou obsahovat jakoukoli hodnotu – jakoukoli proměnnou – řetězce, čísla, objekty, booleovské hodnoty atd.

K hodnotám ve výčtu můžete přistupovat podle názvu atributu stejně jako u jakéhokoli jiného typu objekt JavaScript.

Proč používat Výčet ?

Existuje několik důvodů, proč to můžete chtít udělat:

  • Vzhledem k tomu, že hodnoty výčtu jsou předdefinované, můžete hodnoty určitých hodnot vynutit. Pokud je hodnota přiřazena z Enum, může to být pouze jedna z předem schválených hodnot.
    • Obzvláště užitečné, když pracujete s uživatelským vstupem a chcete se ujistit, že uživatel vybral platnou možnost.
  • Zmenšete velikost dat uložených v souboru nebo databázi. Vaše Enum může například obsahovat složitá nebo zdlouhavá data – ale protože se nezmění, můžete uložit jméno člena Enum do databáze místo uložení celé hodnoty – a když se vaše aplikace načte příště, prostě musí přečtěte si název a poté jej můžete vyhledat ve výčtu, abyste získali plnou hodnotu.
  • Možná přijdete na své vlastní důvody, proč ji používat, jakmile začnete vytvářet své vlastní aplikace – nemám ponětí, k čemu se chystáte!