У свету ТипеСцрипт-а, појам енума је нешто са чиме ћете се често сусретати током развоја апликација.
ТипеСцрипт, иако релативно нов језик, стекао је велику популарност међу програмерима. Заправо, ТипеСцрипт је надскуп ЈаваСцрипт-а, што значи да је сваки важећи ЈаваСцрипт код такође важећи у ТипеСцрипт-у. Оно што ТипеСцрипт додаје је могућност статичког куцања, функција која ЈаваСцрипт-у недостаје.
Шта су заправо ТипеСцрипт енумови, у којим ситуацијама се користе и како се креирају? Овај чланак ће вам пружити све потребне информације о енумима.
Шта су то ТипеСцрипт енумови?
Енуми, или набројиви типови, представљају структуре података фиксне величине које садрже колекцију непроменљивих вредности (константи). ТипеСцрипт није једини језик који користи енуме, они су присутни и у објектно-оријентисаним језицима као што су C# и Јава.
У ТипеСцрипт-у, енумови омогућавају програмерима да дефинишу јасан скуп могућих стања или сврху документа. Они су кључни за дефинисање вредности или својстава која могу имати само ограничен број дефинисаних вредности. На пример, број континената на свету је увек седам.
Укратко, ТипеСцрипт енумови су корисни из следећих разлога:
- Пружају флексибилност, омогућавајући програмерима да лако документују и изразе намере и сценарије употребе.
- Омогућавају креирање меморијски ефикасних прилагођених константи у ЈаваСцрипт-у.
- Штеде време компајлирања и извршавања приликом транслације ТипеСцрипт кода у ЈаваСцрипт.
ТипеСцрипт енумови могу бити дефинисани као стрингови или нумерички типови. Важно је напоменути да се енуми препроцесују и не пролазе тестирање током фазе тестирања. ТипеСцрипт преводи енуме у ЈаваСцрипт код.
Различити типови енума у ТипеСцрипт-у
Сада када имате основно разумевање енума, време је да видите како се они користе у ТипеСцрипт-у. За почетак, можете подесити развојно окружење преузимањем ТипеСцрипт-а и Node.js-а на ваш рачунар или можете користити онлајн решења. Ми ћемо користити ТипеСцрипт Плаигроунд за демонстрацију различитих типова ТипеСцрипт енума.
Ово су различити типови енума у ТипеСцрипт-у:
#1. Нумерички енуми
Користите кључну реч ‘enum’ и након тога наведите име енума који желите да креирате. Затим, у витичастим заградама дефинишите чланове енума. Ово је пример нумеричког енума:
enum CardinalDirections { North = 5, East, South, West, };
Горе наведени код представља енум под именом `CardinalDirections` који има четири члана. У овом случају, могуће су само четири вредности (север, исток, југ и запад), што енум чини идеалним за чување оваквих података.
Члану `CardinalDirections.North` је додељена вредност 5. Осталим члановима нису додељене вредности, јер ће ТипеСцрипт аутоматски подесити вредности. На пример, вредност за `CardinalDirections.East` биће 6, јер ТипеСцрипт увећава претходну вредност за 1.
Вредност за `CardinalDirections.West` биће 8.
Шта ако не доделимо вредност првом члану у витичастим заградама? Енум би изгледао овако:
enum CardinalDirections { North, East, South, West, };
ТипеСцрипт ће аутоматски доделити вредност 0 члану `North`. Ако користите `CardinalDirections.West`, добићете вредност 3.
#2. Стринг енуми
Сваки члан стринг енума мора бити иницијализован стрингом или другим чланом набрајања стрингова. Ово је пример енума стрингова:
enum Direction { Up = "UP", Down = "DOWN", Left = "LEFT", Right = "RIGHT", }
Овај енум се не увећава као што је случај код нумеричких енума. Ако покренете следећи код:
enum Direction { Up = "UP", Down = "DOWN", Left = "LEFT", Right = "RIGHT", } console.log(Direction.Right)
добићете следећи излаз:
„RIGHT“
#3. Хетерогени енуми
Можете комбиновати нумеричке и стрингове вредности да бисте креирали хетерогени енум. Ово је пример:
enum HeterogeneousEnum { No = 0, Yes = "YES", }
#4. Константни и израчунати чланови енума
Чланови енума имају повезане вредности, које могу бити ‘константне’ или ‘израчунате’.
Ово је пример константног енума:
enum E1 { X, Y, Z, }
У овом случају, први члан енума нема иницијализатор и ТипеСцрипт му додељује вредност 0.
Размотрите и овај пример:
enum E1 { X=1, Y, Z, }
Ово је такође константан енум, јер је првом члану додељена вредност, а инкрементално правило се примењује на остале.
Израчунати енуми комбинују константне и израчунате чланове. Погледајте овај пример:
enum Color { Red = 100, Green = (Math.random() * 100), Blue = 200 }
Члан енума `Blue` је константан члан. Са друге стране, члан енума `Green` је израчунат током извршавања користећи функцију `Math.random()`.
#5. `const` енуми
`const` енуми се користе за побољшање перформанси нумеричких енума. У овом случају, енум је декларисан као `const`.
Узмимо пример са данима у недељи:
enum Weekday { Monday = 1, Tuesday, Wednesday, Thursday, Friday }
Ако покренемо `console.log(Weekday.Thursday)`, добићемо излаз 4. Међутим, ако проверимо ЈаваСцрипт код генерисан у време компајлирања, добићемо:
"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);
Можемо да изменимо овај код и декларишемо `Weekday` као `const`:
const enum Weekday { Monday = 1, Tuesday, Wednesday, Thursday, Friday }
Ако покренемо `console.log(Weekday.Thursday)`, ЈаваСцрипт код генерисан у време компајлирања ће бити:
"use strict"; console.log(4 /* Weekday.Thursday */);
Као што видите, ЈаваСцрипт код се оптимизује током компајлирања када свој енум декларишете као `const`.
#6. Амбијентални енуми
Амбијентални енуми користе кључну реч `declare` да опишу облик већ постојећих типова набрајања. Погледајте следећи пример:
declare enum Color { Red, Green, Blue }
Амбијентални енуми се декларишу изван било ког модула и могу се користити за креирање типова за вишекратну употребу. Можете их увезти и користити у својим компонентама под условом да су декларисани глобално.
Сада када разумете различите типове енума у ТипеСцрипт-у, можемо да покажемо како се енуми могу користити на различите начине. Користићемо следећи код као референцу:
enum Direction { North="N", East="E", South="S", West="W", };
Ово су неки од примера употребе:
- Извлачење чланова енума. На пример, ако желимо да приступимо северу, можемо користити:
`console.log(Direction.North);` // Излаз: ‘N’
- Коришћење чланова набрајања: Можете одабрати одређени члан набрајања да представља одређени смер. На пример:
const currentDirection = Direction.East; console.log(`The current direction is ${currentDirection}`);
Овај код ће исписати: „The current direction is E“
Енуми у односу на мапе објеката у ТипеСцрипт-у
Енуми се користе за представљање коначног скупа вредности, као што су боје дуге или дани у недељи. Енуми су стриктно типови, што значи да се грешке могу открити током развоја. Ово је пример ТипеСцрипт енума:
enum Color { Red, Green, Blue, }
Мапе објеката или речници (парови кључ-вредност) се користе за чување и преузимање вредности повезаних са одређеним кључевима. Можете користити мапе објеката у ТипеСцрипт-у за чување било ког типа података. Међутим, они нису стриктно типови, што значи да се грешке у типу можда неће открити током развоја. Ово је пример мапе објеката са истим бојама:
const colors = { red: "FF0000", green: "00FF00", blue: "0000FF", };
Кључне разлике између енума и мапа објеката у ТипеСцрипт-у су:
- Енуми су стриктно типови, док мапе објеката нису.
- Енуми представљају тип, док су мапе објеката структура података.
- Енуми нису флексибилни, док су мапе објеката флексибилне.
Најбоље праксе коришћења енума у ТипеСцрипт-у
Већ смо споменули да ТипеСцрипт није једини програмски језик који користи енуме. Праћење најбољих пракси осигурава да пишете чист, оптимизован код без грешака. Ово су неке од најбољих пракси за писање/коришћење ТипеСцрипт енума:
- Користите велика слова у именима енума: Увек користите велика слова за прву реч када именујете енум. На пример, препоручљиво је користити енум `Number` уместо `number`.
- Користите енуме за константе: Енуми су најбољи избор за дефинисање фиксног скупа повезаних ставки. На пример, у недељи може бити само 7 дана. Чланови енума не би требало да се мењају током извршавања кода.
- Избегавајте прекомерну употребу енума: Можда сте тек научили нови концепт и желите да га користите свуда у вашем ТипеСцрипт пројекту. Међутим, увек користите ТипеСцрипт енуме умерено. ТипеСцрипт енуми су добар избор када желите да задржите читљивост кода.
- Размотрите енуме као набрајања: ТипеСцрипт енуми се могу користити у различите сврхе. Међутим, најбоље је да их користите за представљање набрајања, а не других структура података.
- Избегавајте аутоматске енуме: ТипеСцрипт додељује вредности члановима енума ако им не доделите вредности експлицитно. Доделите вредности својим енумима и избегните неочекивано понашање приликом извршавања кода.
- Документујте енуме: Увек документујте или коментаришите код ако намеравате да га користи шира јавност. Објасните шта сваки енум ради и зашто је то најбоља употреба.
Такође можете истражити најбоље ТипеСцрипт библиотеке и окружења за извршавање да бисте се усавршили као програмер.
Закључак
У овом чланку смо дефинисали енуме у ТипеСцрипт-у, објаснили њихове различите типове и примере употребе. ТипеСцрипт вам може бити од велике помоћи ако желите јасан и чист код. Међутим, постоје и ситуације у којима би требало избегавати коришћење енума и уместо њих користити објекте.
На пример, не би требало да користите енуме када радите са динамичким вредностима. Такође, не можете користити енуме као променљиве; ваш програм ће враћати грешке.
Ако сте и даље збуњени у вези са разликама између ТипеСцрипт-а и ЈаваСцрипт-а, можете сазнати више о њиховим разликама.