„TypeScript“ išvardintas tipas yra patogus būdas supakuoti susijusias reikšmes, turinčias aiškią reikšmę.
Sąrašas arba išvardintas tipas yra duomenų struktūra, leidžianti apibrėžti įvardintų reikšmių rinkinį.
Enums suteikia galimybę pateikti fiksuotą reikšmių rinkinį kaip konstantas. Jie gali padėti padaryti jūsų kodą išraiškingesnį ir savarankiškesnį, nes konkrečioms vertybėms suteikia prasmingų pavadinimų. Čia sužinosite, kaip galite naudoti enumus „TypeScript“.
Enum kūrimas
Enums paprastai reiškia fiksuotą tam tikros vertės parinkčių skaičių. Pavyzdžiui, pirmines spalvas žyminčiame sąraše gali būti nustatytos raudonos, geltonos ir mėlynos vertės.
Enums vaizduoja duomenis kaip raktų/reikšmių porų rinkinį, žinomą kaip enum nariai. Raktas visada turi būti styga. Tačiau reikšmė – automatiškai didėjantis skaičius pagal numatytuosius nustatymus – gali būti skaitinė, eilutė arba apskaičiuota.
Galite sukurti sąrašą „TypeScript“ kalba naudojant enum raktažodį. Po jo nurodykite enum pavadinimą ir porą garbanotų petnešų (
{}), kuriame yra enum nariai. Įprasta „JavaScript“ pavadinimų suteikimo taisyklė teigia, kad enum pavadinimai turi prasidėti didžiąja raide.enum Kryptis {
Aukštyn,
Žemyn,
Kairė,
Teisingai
}
Šiame pavyzdyje yra sąrašas, vadinamas Kryptis. Enum turi narį, atstovaujantį kiekvienai krypčiai: aukštyn, žemyn, kairėn ir dešinėn.
Kadangi šis kodas nenurodo kiekvieno rakto reikšmės, „TypeScript“ automatiškai priskirs reikšmes. Pirmojo nario Up reikšmė bus 0. Likę nariai turės 1 vertę didesnę nei ankstesnio nario. Galite tai aiškiai pareikšti, jei jums sunku prisiminti:
enum Kryptis {
Aukštyn = 0,
Žemyn = 1,
Kairė = 2,
Teisingai = 3,
}
Arba galite aiškiai deklaruoti skirtingas vertes, palikdami nedeklaruotas reikšmes ir toliau didinti kaip anksčiau:
enum Statusas {
Aktyvus = 9,
Neaktyvus, // 10
}
Šiame pavyzdyje neaktyvaus nario reikšmė yra 10. Šis elgesys taikomas sąrašams, turintiems tik skaitines reikšmes, o ne tiems, kuriuose yra eilutės ar nevienalyčių narių.
Įvairūs enumo tipai
„TypeScript“ sąrašai turi numanomą tipą, pagrįstą jų narių turimų verčių tipu. Labiausiai paplitęs tipas yra skaitinis sąrašas, kurio elgesys aprašytas ankstesniame skyriuje, tačiau yra du variantai.
Styginių Enums
Eilučių sąrašas yra toks sąrašas, kuriame visi jo nariai yra eilutės. Skirtingai nuo skaitinių sąrašų, kur reikšmės priskiriamos automatiškai, kiekvieną narį turite inicijuoti eilute:
enum Pagrindinės spalvos {
Raudona = "raudona",
Geltona = "GELTONA",
Mėlyna = "BLUE"
}
Nors eilučių sąrašai neturi automatiškai didėjančių savybių, jie gali būti prasmingesni, jei juos suskirstysite į seriją. Jų reikšmės vis tiek turėtų būti aprašomosios, be narių pavadinimų, o skaitinių reikšmių rinkinys gali neapibrėžti savęs.
Heterogeniniai Enumai
Heterogeniniai sąrašai yra sąrašai, kuriuose yra ir skaitiniai, ir eilutės nariai. Pavyzdžiui:
enum Rezultatas {
Sėkmė = "SĖKMĖ",
Nesėkmė = 0
}
Heterogeniniai sąrašai yra naudingi, kai turite sąrašo narių, kuriems reikalingi skirtingi verčių tipai, atsižvelgiant į kiekvieno nario konkretų kontekstą ar reikšmę. Tačiau, TypeScript dokumentacija nerekomenduojama naudoti nevienalyčių sąrašų, nes jie tampa sudėtingesni, todėl jūsų kodas gali būti labiau klaidingas.
Apskaičiuoti ir pastovūs enum nariai
Kiekvienas sąrašo narys turi reikšmę, kuri gali būti pastovi arba apskaičiuota.
Nuolatiniai Enum nariai
Enum narys yra pastovus, jei jis atitinka bet kurią iš toliau nurodytų sąlygų.
- Tai pirmasis sąrašo narys ir neturi iniciatoriaus.
- Jame nėra iniciatoriaus, o ankstesnis enum narys buvo skaitinė konstanta.
- Jis inicijuojamas naudojant pastovią enum išraišką.
Remiantis „TypeScript“ dokumentacija, pastovi enum išraiška yra „TypeScript“ išraiškų poaibis, kurį galima visiškai įvertinti kompiliavimo metu. Pavyzdžiui, eilutė arba skaitinis literalas.
Pavyzdžiui, toliau esančiame kodo bloke esantys enum nariai yra pastovūs:
// 1 ATVEJIS
enum Kryptis {
Aukštyn,
Žemyn,
Kairė,
Teisingai
}// 2 ATVEJIS
enum Savaitės diena {
Pirmadienis = 1,
antradienis,
trečiadienį,
ketvirtadienis,
penktadienis
}
// 3 ATVEJIS
enum { sezonas
Pavasaris = "PAVASARIS",
Vasara = "VASARA",
Ruduo = "RUDUO",
Žiema = "ŽIEMA"
}
Kai perkeliate pastovius enum narius į paprastą „JavaScript“, sugeneruotas kodas naudoja jų tiesiogines reikšmes. Tai gali būti naudinga našumui ir palengvinti derinimą.
Pavyzdžiui, čia yra perkelta sezono sąrašo versija:
var Sezonas;
(funkcija (Sezonas) {
sezonas["Pavasaris"] = "PAVASARIS";
sezonas["Vasara"] = "VASARA";
sezonas["Ruduo"] = "RUDUO";
sezonas["Žiema"] = "ŽIEMA";
})(Sezonas || (Sezonas = {}));
Apskaičiuoti sąrašo nariai
Galite naudoti apskaičiuotus enum narius, kad priskirtumėte reikšmes enum nariams pagal išraiškas ar kitus dinaminius skaičiavimus. Pavyzdžiui:
enum Dydis {
Mažas = 1,
Vidutinė = apskaičiuotiDydis(12),
Didelis = apskaičiuotiDydis(5)
}funkcijaapskaičiuoti Dydis(vertė: numerį): numerį{
grąžinti vertė * 5;
}
konsolė.log (dydis. Didelis)
The Dydis enum turi tris narius: Mažas, Vidutinis, ir Didelis. Mažajam nariui ji aiškiai priskiria 1 reikšmę. The Vidutinis ir Didelis nariai naudoja funkciją apskaičiuoti Dydis kad būtų galima apskaičiuoti jų vertes vykdymo metu.
Kai dirbate su apskaičiuotais enum nariais, svarbu pažymėti, kad reikšmės nežinomos iki vykdymo laiko. Tai gali sukelti daugiau sudėtingumo ir galimybių vykdymo klaidos palyginti su enum nariais su pastoviomis reikšmėmis.
Pavyzdžiui:
var Dydis;
(funkcija (Dydis) {
Dydis[Dydis["Mažas"] = 1] = "Mažas";
Dydis[Dydis["Vidutinis"] = apskaičiuotiDydis(12)] = "Vidutinis";
Dydis[Dydis["Didelis"] = apskaičiuotiDydis(5)] = "Didelis";
})(Dydis || (Dydis = {}));
konsolė.log(Dydis.Didelis)
Aukščiau pateiktas kodo blokas yra perkelta versija Dydis enum. Atkreipkite dėmesį, kaip „TypeScript“ į „JavaScript“ kodą neįtraukia grąžinamų verčių iš CalendarSize(). Vietoj to, jis apima pradinį funkcijos iškvietimą, kad „JavaScript“ nustatytų reikšmes vykdymo metu.
Prieiga prie Enum reikšmių
Eenum narių reikšmes galite pasiekti naudodami objekto taško žymėjimą.
Pavyzdžiui:
enum Kryptis {
Aukštyn = 0,
Žemyn = 1,
Kairė = 2,
Teisingai = 3,
}
konsolė.log (kryptis. kairėje) // 2
Atvirkštinio atvaizdavimo skaitiniai eilės
Atvirkštinis atvaizdavimas skaitiniuose sąrašuose reiškia galimybę iš jo reikšmės gauti atitinkamo sąrašo nario pavadinimą. Tai gali būti ypač naudinga dirbant su skaitinėmis reikšmėmis, kurias gali tekti iššifruoti.
Pagal numatytuosius nustatymus „TypeScript“ sąrašo reikšmės yra susietos į priekį, o tai reiškia, kad galite pasiekti tik su pavadinimu susietą reikšmę. Tačiau galite rankiniu būdu atlikti atvirkštinį susiejimą, kad gautumėte sąrašo narį pagal jo vertę.
Pavyzdžiui:
enum Kryptis {
Aukštyn = 1,
Žemyn,
Kairė,
Teisingai
}funkcijagetDirectionName(krypties vertė: numerį): styga{
// Atvirkštinis atvaizdavimas
konst kryptisPavadinimas = kryptis[kryptiesViskas];
grąžinti krypties pavadinimas;
}
konsolė.log (getDirectionName(1)); // "Aukštyn"
konsolė.log (getDirectionName(3)); // "Kairė"
Tai getDirectionName funkcija atlieka atvirkštinį atvaizdavimą, pasiekdama enum nario pavadinimą, naudodama jo reikšmę kaip indeksą. Funkcija trunka a krypties vertė kaip argumentą ir nuskaito atitinkamą enum nario pavadinimą naudojant Kryptis [directionValue].
Atvirkštinis atvaizdavimas gali būti naudingas tais atvejais, kai turite skaitinę reikšmę ir turite nustatyti atitinkamą enum nario pavadinimą. Tai suteikia patogų būdą dirbti su enumu tiek pirmyn, tiek atgal.
Yra daug enumo pritaikymų
Galite naudoti sąrašus įvairiuose scenarijuose, pvz., tvarkydami jungiklio teiginius, nustatydami funkcijų parametrus, susiedami duomenis ir pateikdami pasirinkimus ar nustatymus.
Nesvarbu, ar jums reikia pateikti baigtinį parinkčių rinkinį, ar valdyti sudėtingus būsenos perėjimus, „TypeScript“ sąrašai yra vertingas įrankis, skirtas pagerinti kodo aiškumą ir struktūrą.