Водич за рад са њим

TypeScript predstavlja nadogradnju JavaScripta koja omogućava pisanje tipski sigurnog koda.

Korišćenjem TypeScripta, greške se mogu otkriti i popraviti u ranijoj fazi razvoja. Jedna od bitnih karakteristika TypeScripta su enumeracije, poznate kao enumi. Enumi su popularan koncept u TypeScriptu koji doprinosi pisanju sigurnijeg koda.

U ovom tekstu detaljno ću objasniti šta su enumi, kako se kreiraju i koriste, kao i druge relevantne aspekte.

Šta je enum?

Enum je skraćenica za nabrojani tip. Nabrojani tip podataka definiše skup različitih vrednosti koje promenljiva tog tipa može imati. Te različite vrednosti se često nazivaju članovima ili elementima.

U ovom članku koristićemo termin članovi. Enumi nisu ekskluzivna karakteristika TypeScripta; nabrojani tipovi su prisutni i koriste se u drugim programskim jezicima. Korišćenje enuma poboljšava tipsku sigurnost unutar TypeScript programa.

Pročitajte i: Najbolje TypeScript biblioteke i okruženja za izvršavanje koje svaki programer treba da poznaje

Zašto koristiti enume?

Enumi olakšavaju određivanje validnih vrednosti koje promenljiva može da sadrži, kao i mogućih vrednosti za argumente funkcija. Na taj način se osigurava da programeri uvek dodeljuju očekivane vrednosti promenljivama i argumentima. Ovo pomaže u uklanjanju grešaka i pisanju sigurnijeg, pouzdanijeg koda.

Preduslovi za rad sa enumima

U ovom vodiču demonstriraću rad sa enumima u TypeScriptu. Da biste mogli da pratite uputstva, potrebno je da imate okruženje za pokretanje i izvršavanje TypeScript koda.

Zato je neophodno da imate instaliran Node.js kako biste mogli izvršavati JavaScript kod koji generiše TypeScript. Ukoliko nemate instaliran TypeScript, video snimak ispod objašnjava proces instalacije.

Alternativno, za brzo kompajliranje i izvršavanje skripti, možete koristiti `ts-node`. Iako ću ga koristiti u ovom članku, preporučujem instalaciju TypeScripta za veće projekte. Da biste izvršili skriptu pomoću `ts-node`, koristite sledeću komandu:

npx ts-node <naziv_skripte>

Ovaj članak takođe pretpostavlja da ste upoznati sa JavaScriptom i osnovama TypeScripta.

Rad sa jednostavnim enumom

Kako kreirati jednostavan enum

Enumi u TypeScriptu se definišu pomoću ključne reči `enum`, nakon koje sledi naziv enuma i zatim lista članova enuma. Primer ispod pokazuje deklaraciju enuma za četiri kardinalne tačke kompasa.

enum Direction {
    North,
    East,
    South,
    West
}

Važno je napomenuti da članovi enuma nisu okruženi navodnicima – to nisu stringovi.

Kako se koristi jednostavan enum

Vrednost enuma se dodeljuje promenljivoj na sledeći način:

const heading: Direction = Direction.North;

Pošto se promenljivoj dodeljuje vrednost prilikom deklaracije, TypeScript može da zaključi tip podataka, tako da tip nije neophodno eksplicitno navoditi. Stoga, možemo pisati ovako:

const heading = Direction.North;

Da bismo videli koju vrednost ima promenljiva `heading`, možemo je ispisati pomoću `console.log`.

console.log(heading);

Rezultat će biti:

0

Promenljiva `heading` sadrži vrednost nula, iako smo joj dodelili `Direction.North`. Razlog je što se svakom članu enuma automatski dodeljuje numerička vrednost, počevši od 0 za prvi član, 1 za drugi i tako dalje. Primer:

console.log(Direction.North, Direction.East, Direction.South, Direction.West)

Dakle, moguće je proveriti da li promenljiva `heading` sadrži `North` tako što ćemo proveriti da li je jednaka nuli. Na primer:

// Provera jednakosti
let isNorth = heading == 0;

// Ispisivanje rezultata
console.log(isNorth);

Kao što je prethodno prikazano, `Direction.North` je jednako 0. Umesto provere jednakosti sa nulom, možemo proveriti jednakost sa `Direction.North`:

// Provera da li je smer sever
isNorth = heading == Direction.North;

// Ispisivanje rezultata
console.log(isNorth);

Ovo je korisno i najverovatnije ćete na ovaj način koristiti enume. Međutim, mogu se koristiti i na naprednije načine, kao što ćemo videti u nastavku. U sledećem odeljku ćemo se baviti radom sa prilagođenim vrednostima.

Rad sa prilagođenim vrednostima

Kada kreirate enum, TypeScript automatski dodeljuje numeričke vrednosti članovima, počevši od nule. Međutim, možete želeti da članovi imaju prilagođene vrednosti. U tom slučaju, možete ih eksplicitno dodeliti:

enum StarRating {
    VeryPoor = 1,
    Poor = 2,
    Average = 3,
    Good = 4,
    Excellent = 5
}

Alternativno, možete uraditi sledeće:

enum StarRating {
    VeryPoor = 1,
    Poor,
    Average,
    Good,
    Excellent
}

U ovom slučaju, prvom članu će biti dodeljena vrednost 1. Sledeći članovi će dobiti vrednosti koje se automatski inkrementiraju u odnosu na prethodne. Dakle, `Poor` će imati vrednost 2, `Average` vrednost 3, i tako dalje.

Članovi enuma ne moraju uvek imati numeričke vrednosti, kao što ćemo videti kasnije. Međutim, oni sa numeričkim vrednostima će se ponašati kao obični brojevi.

console.log(typeof StarRating.Average);

Ovo će ispisati „number“. To znači da možete koristiti članove enuma u svim operacijama predviđenim za brojeve, uključujući poređenja:

console.log(StarRating.Excellent > StarRating.Average)

Ovo će ispisati „true“.

Korišćenje stringova kao prilagođenih vrednosti

Kao što je pomenuto, članovi enuma mogu imati vrednosti stringova umesto samo brojeva. Primer:

enum Choice {
    RedPill = "Know Everything",
    BluePill = "Know Nothing"
}

U ovom slučaju, članovi enuma se ponašaju slično kao u prethodnim primerima, osim što su njihove vrednosti stringovi, pa se umesto numeričkih operacija mogu vršiti operacije nad stringovima.

Heterogeni enumi

Moguće je mešati stringove i numeričke vrednosti unutar istog enuma. Iako se to ne preporučuje i nije često korisno, ipak je moguće.

enum Mixed {
    First = "String",
    Second = 2
}

Završne reči

U ovom članku smo obradili šta su enumi u TypeScriptu i objasnili zašto su bitni. Takođe smo se bavili različitim tipovima vrednosti koje članovi enuma mogu imati.

Zatim pogledajte naš članak o tipovima i interfejsima u TypeScriptu.