TypeScript uzskaitītais tips ir ērts veids, kā iesaiņot saistītās vērtības ar skaidru nozīmi.

Uzskaitījums jeb uzskaitītais veids ir datu struktūra, kas ļauj definēt nosaukto vērtību kopu.

Enums nodrošina veidu, kā fiksētu vērtību kopu attēlot kā konstantes. Tie var palīdzēt padarīt jūsu kodu izteiksmīgāku un pašdokumentējošāku, piešķirot konkrētām vērtībām jēgpilnus nosaukumus. Šeit jūs uzzināsit, kā TypeScript var izmantot enums.

Enum izveide

Enums parasti apzīmē noteiktu opciju skaitu noteiktai vērtībai. Piemēram, enum, kas apzīmē primārās krāsas, var būt fiksētas vērtības sarkanai, dzeltenai un zilai.

Enums attēlo datus kā atslēgu/vērtību pāru kopu, kas pazīstama kā enum dalībnieki. Atslēgai vienmēr jābūt virknei. Tomēr vērtība — pēc noklusējuma automātiski pieaugošs skaitlis — var būt skaitlis, virkne vai aprēķināta.

Jūs varat izveidot enumu TypeScript valoda izmantojot enum atslēgvārds. Sekojiet tai saraksta nosaukumam un cirtainiem lencēm ({}), kas satur enum dalībniekus. Izplatīta JavaScript nosaukumu piešķiršanas metode nosaka, ka enum nosaukumi jāsākas ar lielo burtu.

instagram viewer
enum Virziens {
Uz augšu,
Uz leju,
pa kreisi,
Pa labi
}

Šajā piemērā ir iekļauts saraksts ar nosaukumu Virziens. Enum ir dalībnieks, kas pārstāv katru virzienu: uz augšu, uz leju, pa kreisi un pa labi.

Tā kā šis kods nenorāda vērtību katrai atslēgai, TypeScript automātiski piešķirs vērtības. Pirmā dalībnieka Up vērtība būs 0. Katram atlikušajam dalībniekam vērtība būs par 1 lielāka nekā iepriekšējā dalībnieka vērtība. Varat to skaidri paziņot, ja jums ir grūti atcerēties:

enum Virziens {
Uz augšu = 0,
Uz leju = 1,
Pa kreisi = 2,
Pa labi = 3,
}

Vai arī varat skaidri deklarēt dažādas vērtības, atstājot nedeklarētās vērtības, lai turpinātu palielināt kā iepriekš:

enum Statuss {
Aktīvs = 9,
neaktīvs, // 10
}

Šajā piemērā neaktīva dalībnieka vērtība ir 10. Šī darbība attiecas uz uzskaitījumiem, kuriem ir tikai skaitliskas vērtības, nevis tiem, kuros ir virkne vai neviendabīgi locekļi.

Dažādi Enum veidi

TypeScript enumiem ir netiešs tips, kas balstās uz to dalībniekiem piederošo vērtību veidu. Visizplatītākais veids ir skaitliskā skaitīšana, kuras darbība ir aprakstīta iepriekšējā sadaļā, taču ir divas variācijas.

Stīgu enums

Virknes enum ir enum, kurā visi tās locekļi ir virknes. Atšķirībā no skaitliskām uzskaitēm, kur vērtības tiek piešķirtas automātiski, katrs dalībnieks ir jāinicializē ar virkni:

enum Primārās krāsas {
Sarkans = "SARKANS",
Dzeltens = "DZELTENS",
Zils = "ZILS"
}

Lai gan virkņu uzskaitījumiem nav automātiskas palielināšanas rekvizītu, tiem var būt lielāka nozīme, ja tos serializējat. To vērtībām joprojām ir jābūt aprakstošām, bez dalībnieku nosaukumiem, savukārt skaitlisko vērtību kopa var nebūt pašaprakstoša.

Heterogēni enumi

Heterogēnās enums ir enums, kas satur gan ciparus, gan virknes locekļus. Piemēram:

enum Rezultāts {
Panākumi = "VEIKSMES",
Neveiksme = 0
}

Heterogēni uzskaitījumi ir noderīgi, ja jums ir uzskaites dalībnieki, kuriem nepieciešami dažādi vērtību veidi, pamatojoties uz katra dalībnieka īpašo kontekstu vai nozīmi. Tomēr TypeScript dokumentācija neveicina neviendabīgu uzskaitījumu izmantošanu, jo tie rada sarežģītību, kas var padarīt jūsu kodu vairāk kļūdu.

Aprēķinātie un pastāvīgās uzskaites locekļi

Katram enum dalībniekam ir vērtība, kas var būt nemainīga vai aprēķināta.

Pastāvīgie Enum locekļi

Enum dalībnieks ir nemainīgs, ja tas atbilst kādam no tālāk minētajiem nosacījumiem.

  1. Tas ir pirmais enum dalībnieks, un tam nav inicializatora.
  2. Tam nav inicializatora, un iepriekšējais uzskaites elements bija skaitliska konstante.
  3. Tas tiek inicializēts ar nemainīgu enum izteiksmi.

Saskaņā ar TypeScript dokumentāciju konstanta enum izteiksme ir TypeScript izteiksmju apakškopa, ko var pilnībā novērtēt kompilēšanas laikā. Piemēram, virkne vai ciparu literāls.

Piemēram, visi enumu dalībnieki zemāk esošajā koda blokā ir nemainīgi:

// 1. GADĪJUMS
enum Virziens {
Uz augšu,
Uz leju,
pa kreisi,
Pa labi
}

// 2. GADĪJUMS
enum darba diena {
Pirmdiena = 1,
otrdiena,
trešdien,
ceturtdiena,
piektdiena
}

// 3. GADĪJUMS
enum Sezona {
Pavasaris = "PAVASARIS",
Vasara = "VASARA",
Rudens = "RUDENS",
Ziema = "ZIEMA"
}

Transpilējot pastāvīgos enum dalībniekus vienkāršā JavaScript, ģenerētais kods izmanto to burtiskās vērtības. Tas var uzlabot veiktspēju un atvieglot atkļūdošanu.

Piemēram, šeit ir pārsūtīta sezonas saraksta versija:

var Sezona;
(funkciju (Sezona) {
sezona["pavasaris"] = "PAVASARIS";
sezona["Vasara"] = "VASARA";
sezona["Rudens"] = "RUDENS";
sezona["Ziema"] = "ZIEMA";
})(Sezona || (Sezona = {}));

Aprēķinātie uzskaites locekļi

Varat izmantot aprēķinātos enum dalībniekus, lai piešķirtu vērtības enum dalībniekiem, pamatojoties uz izteiksmēm vai citiem dinamiskiem aprēķiniem. Piemēram:

enum Izmērs {
Mazs = 1,
Vidēja = aprēķinātIzmērs(12),
Liels = aprēķinātIzmērs(5)
}

funkcijuaprēķinātIzmērs(vērtība: numuru): numuru{
atgriezties vērtība * 5;
}

konsole.log (Izmērs. Liels)

The Izmērs enum ir trīs dalībnieki: Mazs, Vidēja, un Liels. Tas nepārprotami piešķir vērtību 1 mazajam dalībniekam. The Vidēja un Liels dalībnieki izmanto funkciju aprēķinātIzmērs lai aprēķinātu to vērtības izpildlaikā.

Strādājot ar aprēķinātajiem enum dalībniekiem, ir svarīgi ņemt vērā, ka vērtības nav zināmas līdz izpildlaikam. Tas var radīt lielāku sarežģītību un potenciālu izpildlaika kļūdas salīdzinot ar enum dalībniekiem ar nemainīgām vērtībām.

Piemēram:

var Izmērs;
(funkciju (Izmērs) {
Izmērs[Izmērs["Mazais"] = 1] = "Mazais";
Izmērs[Izmērs["Vidējs"] = aprēķinātIzmērs(12)] = "Vidējs";
Izmērs[Izmērs["Liels"] = aprēķinātIzmērs(5)] = "Liels";
})(Izmērs || (Izmērs = {}));

konsole.log(Izmērs.Liels)

Iepriekš minētais koda bloks ir pārsūtītā versija Izmērs enum. Ņemiet vērā, ka TypeScript JavaScript kodā neiekļauj atgriešanas vērtības no kalkulatora lielums(). Tā vietā tas ietver sākotnējo funkcijas izsaukumu, lai JavaScript noteiktu vērtības izpildes laikā.

Piekļuve Enum vērtībām

Varat piekļūt enum dalībnieku vērtībām, izmantojot objekta punktu apzīmējumu.

Piemēram:

enum Virziens {
Uz augšu = 0,
Uz leju = 1,
Pa kreisi = 2,
Pa labi = 3,
}

konsole.log (virziens. pa kreisi) // 2

Reversās kartēšanas skaitļu enums

Reversā kartēšana ciparu uzskaitījumos attiecas uz spēju iegūt atbilstošā uzskaites dalībnieka nosaukumu no tā vērtības. Tas var būt īpaši noderīgi, strādājot ar skaitliskām vērtībām, kuras, iespējams, būs jāatšifrē.

Pēc noklusējuma TypeScript enum vērtības ir uz priekšu kartētas, kas nozīmē, ka varat piekļūt tikai vērtībai, kas saistīta ar nosaukumu. Tomēr varat manuāli veikt apgriezto kartēšanu, lai izgūtu uzskaites dalībnieku, pamatojoties uz tā vērtību.

Piemēram:

enum Virziens {
Uz augšu = 1,
Uz leju,
pa kreisi,
Pa labi
}

funkcijugetDirectionName(virzienaVērtība: numuru): stīga{
// Reversā kartēšana
konst virziensNosaukums = virziens[virzienaVērtība];
atgriezties virziensName;
}

konsole.log (getDirectionName(1)); // "Uz augšu"
konsole.log (getDirectionName(3)); // "Pa kreisi"

Šis getDirectionName funkcija veic apgriezto kartēšanu, piekļūstot enum dalībnieka nosaukumam, izmantojot tā vērtību kā indeksu. Funkcija aizņem a virziensVērtība kā argumentu un izgūst atbilstošo enum dalībnieka nosaukumu, izmantojot Virziens[virzienaVērtība].

Apgrieztā kartēšana var būt ērta gadījumos, kad jums ir skaitliska vērtība un ir jānosaka atbilstošais enum dalībnieka nosaukums. Tas nodrošina ērtu veidu, kā strādāt ar enums gan uz priekšu, gan atpakaļ.

Ir daudz Enums lietojumu

Varat izmantot enums dažādos scenārijos, piemēram, apstrādājot slēdžu paziņojumus, definējot funkciju parametrus, kartējot datus un attēlojot izvēles vai iestatījumus.

Neatkarīgi no tā, vai jums ir jāattēlo ierobežota opciju kopa vai jāpārvalda sarežģītas stāvokļa pārejas, TypeScript enums ir vērtīgs rīks, lai uzlabotu koda skaidrību un struktūru.