Klíč ke srozumitelnosti kódu

TypeScript enums je fráze, se kterou se při práci s jazykem TypeScript setkáte hodně.

TypeScript patří mezi nejmladší, ale je také hodnocen jako jeden z nejoblíbenějších programovacích jazyků vývojářů. TypeScript je rozšíření (nadmnožina) JavaScriptu. Jakýkoli platný kód JavaScript je tedy platný také v TypeScriptu. TypeScript však zavádí možnosti statického psaní (chybějící funkce v JavaScriptu).

Co jsou výčty TypeScript, jejich případy použití a jak je můžete vytvořit? Tento článek pokryje vše, co potřebujete vědět o Enumech.

Co jsou výčty TypeScript?

Výčty (výčtové typy) jsou datové struktury konstantní délky, které obsahují sadu neměnných hodnot (konstant). TypeScript není jediný jazyk, který používá Enums, protože jsou k dispozici v objektově orientovaných jazycích, jako je C# a Java.

V TypeScriptu umožňují výčty vývojářům vytvořit sadu odlišných případů nebo záměrů dokumentu. Jsou také důležité při nastavování hodnot nebo vlastností, které mohou mít pouze určitý počet hodnot. Například na světě může být pouze sedm kontinentů.

Stručně řečeno, výčty TypeScript jsou důležité v následujících ohledech;

  • Jsou flexibilní, protože umožňují vývojářům snadno dokumentovat a vyjadřovat záměry a případy použití
  • Výčty umožňují vývojářům vytvářet energeticky efektivní vlastní konstanty v JavaScriptu
  • Šetří kompilaci a běh při kompilaci kódu TypeScript do kódu JavaScript

Výčty TypeScript mohou být buď řetězce, nebo v číselné formě. Tyto výčty jsou však předzpracovány a během testovací fáze neprocházejí testováním. TypeScript překládá/převádí výčty na kód JavaScript.

Různé výčty v TypeScriptu

Nyní, když rozumíte výčtům, je čas vidět, jak fungují v TypeScriptu. Vývojový server můžete nastavit stažením TypeScript a Node.js na místní počítač nebo pomocí online řešení. Budeme používat TypeScript hřiště k demonstraci různých výčtů TypeScript.

Toto jsou různé typy výčtu v TypeScript;

#1. Číselné výčty

Musíte použít klíčové slovo ‚enum‘ a následovat za ním název enum, který chcete vytvořit. Poté vytvoříte kari závorky, které budou určovat členy enum. Toto je příklad číselného výčtu;

enum CardinalDirections {
  North = 5,
  East,
  South,
  West,
};

Výše uvedené představuje výčet s názvem CardinalDirections, který má čtyři členy. V tomto případě mohou existovat pouze čtyři hodnoty (sever, východ, jih a západ), díky čemuž je enum vynikající volbou pro uložení dat.

Přiřadil jsem CardinalDirections.North hodnotu 5. Ostatní hodnoty jsem však nepřiřadil, protože TypeScript udělá zbytek automaticky. Například hodnota pro CardinalDirections.East bude 6, protože TypeScript zvýší předchozí hodnotu o 1.

CardinalDirections.West bude 8.

Co když nepřiřadíme hodnotu první položce v kari závorkách? Náš výčet bude;

enum CardinalDirections {
  North,
  East,
  South,
  West,
};

TypeScript automaticky přiřadí severní hodnotu 0. Pokud zadáte něco jako CardinalDirections.West, dostanete 3

#2. Řetězcové výčty

Každý člen ve výčtu řetězce musí být inicializován jiným členem výčtu řetězce nebo řetězcovým literálem. Toto je příklad řetězce enum;

enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right = "RIGHT",
}

Tento výčet se nezvyšuje jako u číselných výčtů. Pokud spustíte tento kód;

enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right = "RIGHT",
}
console.log(Direction.Right)

To je to, co dostanete;

„ŽE JO“

#3. Heterogenní výčty

Můžete kombinovat číselné a řetězcové členy a vytvořit heterogenní výčet. Toto je příklad;

enum HeterogeneousEnum {
  No = 0,
  Yes = "YES",
}

#4. Konstantní a vypočítané členy výčtu

Členové výčtu mají přidružené hodnoty, které mohou být „konstantní“ nebo „vypočítané“.

Toto je příklad konstantního výčtu;

enum E1 {
  X,
  Y,
  Z,
}

V tomto případě první člen výčtu nemá inicializátor a TypeScript mu přiřadí hodnotu 0.

Můžete také zvážit tento příklad;

enum E1 {
  X=1,
  Y,
  Z,
}

Toto je také konstantní výčet, protože prvnímu členu je přiřazena hodnota a na zbytek se použije přírůstkové pravidlo.

Vypočtené výčty kombinují konstantní a vypočítané členy. Podívejte se na tento příklad;

enum Color {
  Red = 100,
  Green = (Math.random() * 100),
  Blue = 200
}

Člen výčtu ‚Blue‘ je stálým členem. Na druhou stranu, člen výčtu ‚Green‘ je výčet vypočítaný pomocí funkce Math.random() za běhu.

#5. Const výčty

const výčty se používají ke zvýšení výkonu číselných výčtů. V tomto případě deklarujeme enum jako konst.

Zvažte tento kód, který ukazuje dny v týdnu;

enum Weekday {
  Monday = 1,
  Tuesday,
  Wednesday,
  Thursday,
  Friday
}

Pokud spustíme console.log(Weekday.Thursday), dostaneme odpověď jako 4. Pokud však zkontrolujeme JavaScript generovaný v době kompilace, dostaneme toto;

"use strict";
var Weekday;
(function (Weekday) {
    Weekday[Weekday["Monday"] = 1] = "Monday";
    Weekday[Weekday["Tuesday"] = 2] = "Tuesday";
    Weekday[Weekday["Wednesday"] = 3] = "Wednesday";
    Weekday[Weekday["Thursday"] = 4] = "Thursday";
    Weekday[Weekday["Friday"] = 5] = "Friday";
})(Weekday || (Weekday = {}));
console.log(Weekday.Thursday);

Můžeme změnit tento kód a deklarovat ‚Weekday‘ jako konstantu;

const enum Weekday {
  Monday = 1,
  Tuesday,
  Wednesday,
  Thursday,
  Friday
}

Pokud spustíme tento kód console.log(Weekday.Thursday), JavaScript, který bude vygenerován v době kompilace, bude;

"use strict";
console.log(4 /* Weekday.Thursday */);

Můžete vidět, že kód JavaScript v době kompilace je optimalizován, když deklarujete svůj enum jako const.

#6. Okolní výčty

Okolní výčty používají klíčové slovo ‚deklarovat‘ k popisu tvaru již existujících typů výčtů. Zvažte tento příklad;

declare enum Color {
  Red,
  Green,
  Blue
}

Okolní výčty jsou deklarovány mimo jakýkoli modul a lze je použít k vytvoření opakovaně použitelných typů. Jako takové můžete vždy importovat okolní výčty a používat je ve svých komponentách, pokud jsou deklarovány globálně.

Nyní rozumíte různým typům výčtů v TypeScriptu. Nyní si můžeme ukázat, jak můžete používat výčty různými způsoby. Toto bude náš referenční kód;

enum Direction {
  North="N",
  East="E",
  South="S",
  West="W",
};

Toto jsou některé případy použití;

  • Extrahujte členy výčtu. Například, pokud chceme mít přístup na sever, můžeme použít

console.log(Směr.Sever); // Výstupy: ‚N‘

  • Použít členy výčtu: Můžete vybrat určitý člen výčtu, který bude reprezentovat konkrétní směr. Například,
const currentDirection = Direction.East;
console.log(`The current direction is ${currentDirection}`);

To dá tomuto výstupu „Směr proudu je E“

Výčty vs. Mapy objektů v TypeScriptu

Výčty se používají k reprezentaci konečného souboru hodnot. Například barvy duhy nebo dny v týdnu. Výčty jsou silně typované, což znamená, že zachycují jakékoli chyby během vývoje. Toto je příklad výčtu TypeScript;

enum Color {
  Red,
  Green,
  Blue,
}

Mapy objektů/slovníky/páry klíč–hodnota ukládají a načítají hodnoty spojené s konkrétními klíči. Mapy objektů TypeScript můžete použít k uložení jakéhokoli typu dat. Nejsou však striktně typovány, což znamená, že chyby typu nemusí být zachyceny během vývoje. Toto je příklad mapy objektů stejných barev;

const colors = {
  red: "FF0000",
  green: "00FF00",
  blue: "0000FF",
};

Hlavní rozdíly mezi výčty a mapami objektů v TypeScript jsou;

  • Výčty jsou striktně typovány, zatímco mapy objektů nikoli
  • Výčty jsou ‚Typ‘, zatímco mapy objektů jsou datová struktura
  • Výčty nejsou flexibilní, zatímco mapy objektů jsou flexibilní

Osvědčené postupy používání výčtů v TypeScriptu

Již jsme uvedli, že TypeScript není jediným programovacím jazykem s funkcí enums. Dodržování osvědčených postupů zajišťuje, že budete psát čistý, optimalizovaný kód bez chyb. Toto jsou některé z nejlepších postupů při psaní/používání výčtů TypeScript;

  • Kapitalizovat názvy výčtů: Při pojmenovávání výčtů vždy pište první slovo velkými písmeny. Například je vždy vhodné mít výčet ‚Number‘ místo ‚number‘.
  • Použití výčtů pro konstanty: Výčty se nejlépe používají k deklaraci pevné sady souvisejících položek. Například týden může mít pouze 7 dní. Členové výčtu by se během provádění nikdy neměli měnit.
  • Vyhněte se nadměrnému používání výčtů: Možná jste se právě naučili nový koncept a chcete jej používat téměř všude ve svém projektu TypeScript. Výčty TypeScript však vždy používejte s mírou. Výčty TypeScript jsou dobrou volbou, pokud chcete zachovat čitelnost kódu.
  • Považujte výčty za výčty: Výčty TypeScript můžete použít pro různé účely. Nejlepší možností je však použít je k reprezentaci pouze výčtů a nikoli jiných datových struktur.
  • Vyhněte se automatickým výčtům: TypeScript přiřadí hodnoty členům výčtu, pokud je nepřiřadíte explicitně. Zadejte hodnoty výčtů a vyhněte se neočekávanému chování při spuštění kódu.
  • Výčty dokumentů: Vždy dokumentujte nebo komentujte svůj kód, pokud hodláte používat širokou veřejnost. Vysvětlete, co každý výčet dělá a proč je nejlepší případ použití.

Můžete také prozkoumat nejlepší knihovny TypeScript a runtime, abyste je poznali jako vývojáři.

Závěr

V TypeScriptu můžete definovat výčty a vysvětlit různé typy a případy jejich použití. TypeScript se vám bude hodit, když chcete mít kód přehledný. Existují však i případy, kdy byste se jim měli vyhnout a místo nich používat předměty.

Při práci s dynamickými hodnotami byste například neměli používat výčty. Výčty také nemůžete používat jako proměnné; váš program vrátí chyby.

Můžete se dozvědět více o rozdílech mezi TypeScript a JavaScript, pokud jste stále zmateni těmito dvěma.