TypeScript'in numaralandırılmış türü, ilgili değerleri net bir anlamla paketlemenin kullanışlı bir yoludur.

Bir numaralandırma veya numaralandırılmış bir tür, bir dizi adlandırılmış değer tanımlamanıza izin veren bir veri yapısıdır.

Numaralandırmalar, sabit bir değer kümesini sabit olarak temsil etmenin bir yolunu sağlar. Belirli değerlere anlamlı adlar vererek kodunuzu daha anlamlı ve kendini belgeleyen hale getirmeye yardımcı olabilirler. Burada, TypeScript'te numaralandırmaları nasıl kullanabileceğinizi öğreneceksiniz.

Enum oluşturma

Numaralandırmalar genellikle belirli bir değer için sabit sayıda seçeneği temsil eder. Örneğin, birincil renkleri temsil eden bir sıralama, Kırmızı, Sarı ve Mavi için sabit değerlere sahip olabilir.

Numaralandırmalar, verileri numaralandırma üyeleri olarak bilinen bir dizi anahtar/değer çifti olarak temsil eder. Anahtar her zaman bir dize olmalıdır. Ancak, varsayılan olarak otomatik artan bir sayı olan değer sayısal, bir dize veya hesaplanmış olabilir.

İçinde bir enum oluşturabilirsiniz

instagram viewer
TypeScript dili kullanmak Sıralama anahtar kelime. Sıralamanın adı ve bir çift kıvrık ayraç ({}) enum üyelerini içerir. Ortak bir JavaScript adlandırma kuralı enum adlarının büyük harfle başlaması gerektiğini belirtir.

Sıralama Yön {
Yukarı,
Aşağı,
Sol,
Sağ
}

Bu örnek, adlı bir enum içerir. Yön. Numaralandırmanın her yönü temsil eden bir üyesi vardır: Yukarı, Aşağı, Sol ve Sağ.

Bu kod, anahtarların her biri için bir değer belirtmediğinden, TypeScript değerleri otomatik olarak atayacaktır. İlk üye Up, 0 değerine sahip olacaktır. Kalan üyelerin her biri, önceki üyeninkinden 1 daha büyük bir değere sahip olacaktır. Hatırlamakta zorluk çekiyorsanız, bunu açıkça beyan edebilirsiniz:

Sıralama Yön {
Yukarı = 0,
Aşağı = 1,
Sol = 2,
Sağ = 3,
}

Veya daha önce olduğu gibi artırmaya devam etmek için bildirilmemiş değerleri bırakarak farklı değerleri açıkça bildirebilirsiniz:

Sıralama Durum {
aktif = 9,
etkin değil, // 10
}

Bu örnekte, Etkin olmayan üyenin değeri 10'dur. Bu davranış, dize veya heterojen üyelere değil, yalnızca sayısal değerlere sahip numaralandırmalar için geçerlidir.

Farklı Enum Türleri

TypeScript'teki numaralandırmalar, üyelerinin sahip olduğu değerlerin türüne dayanan örtük bir türe sahiptir. En yaygın tür, davranışı önceki bölümde ele alınan sayısal sıralamadır, ancak iki çeşidi vardır.

Dize Numaralandırmaları

Bir string enum, tüm üyelerinin string olduğu bir enum'dur. Değerlerin otomatik olarak atandığı sayısal sıralamalardan farklı olarak, her üyeyi bir dize ile başlatmanız gerekir:

Sıralama BirincilRenkler {
kırmızı = "KIRMIZI",
Sarı = "SARI",
Mavi = "MAVİ"
}

Dize numaralandırmaları otomatik artırma özelliklerine sahip olmasa da, bunları serileştirirseniz daha anlamlı olabilir. Değerleri, üye adları olmaksızın açıklayıcı olmalıdır, ancak bir dizi sayısal değer kendi kendini açıklayıcı olmayabilir.

heterojen listeler

Heterojen numaralandırmalar, hem sayısal hem de dize üyelerini içeren numaralandırmalardır. Örneğin:

Sıralama Sonuç {
başarı = "BAŞARI",
Başarısızlık = 0
}

Heterojen numaralandırmalar, her üyenin özel bağlamına veya anlamına göre farklı değer türleri gerektiren numaralandırma üyeleriniz olduğunda kullanışlıdır. Ancak TypeScript belgeleri kodunuzu daha fazla hataya açık hale getirebilecek karmaşıklığa yol açtıklarından, heterojen numaralandırmaların kullanılmasını önermez.

Hesaplanmış ve Sabit Enum Üyeler

Her numaralandırma üyesinin sabit veya hesaplanabilir bir değeri vardır.

Sabit Enum Üyeleri

Bir numaralandırma üyesi, aşağıdaki koşullardan herhangi birini karşılıyorsa sabittir.

  1. Numaralandırmanın ilk üyesidir ve başlatıcısı yoktur.
  2. Bir başlatıcısı yoktur ve önceki enum üyesi sayısal bir sabittir.
  3. Sabit bir enum ifadesi ile başlatılır.

TypeScript belgelerine göre, Sabit bir enum ifadesi, derleme zamanında tam olarak değerlendirilebilen TypeScript ifadelerinin bir alt kümesidir. Örneğin, bir dize veya sayısal değişmez.

Örneğin, aşağıdaki kod bloğundaki numaralandırmaların üyelerinin tümü sabittir:

// DAVA 1
Sıralama Yön {
Yukarı,
Aşağı,
Sol,
Sağ
}

// DURUM 2
Sıralama Hafta içi {
Pazartesi = 1,
Salı,
Çarşamba,
Perşembe,
Cuma
}

// VAKA 3
Sıralama Mevsim {
yay = "BAHAR",
yaz = "YAZ",
sonbahar = "SONBAHAR",
Kış = "KIŞ"
}

Sabit numaralandırma üyelerini düz JavaScript'e aktardığınızda, oluşturulan kod onların değişmez değerlerini kullanır. Bu, performans için faydalı olabilir ve hata ayıklamayı kolaylaştırır.

Örneğin, Sezon sıralamasının aktarılmış versiyonu:

var Mevsim;
(işlev (Mevsim) {
Mevsim["Bahar"] = "BAHAR";
Mevsim["Yaz"] = "YAZ";
Mevsim["Sonbahar"] = "SONBAHAR";
Mevsim["Kış"] = "KIŞ";
})(Sezon || (Sezon = {}));

Hesaplanmış Enum Üyeleri

Hesaplanan numaralandırma üyelerini, ifadelere veya diğer dinamik hesaplamalara dayalı olarak numaralandırma üyelerine değer atamak için kullanabilirsiniz. Örneğin:

Sıralama Boyut {
Küçük = 1,
Orta = hesaplaBoyut(12),
Büyük = hesaplaBoyut(5)
}

işlevhesaplaBoyutu(değer: sayı): sayı{
geri dönmek değer * 5;
}

konsol.log (Boyut. Büyük)

bu Boyut enum'un üç üyesi vardır: Küçük, Orta, Ve Büyük. Küçük üyeye açıkça 1 değerini atar. bu Orta Ve Büyük üyeler bir işlev kullanır hesaplaBoyutu çalışma zamanında değerlerini hesaplamak için.

Hesaplanmış enum üyeleriyle çalışırken, değerlerin çalışma zamanına kadar bilinmediğini unutmamak önemlidir. Bu, daha fazla karmaşıklık ve potansiyel getirebilir çalışma zamanı hataları sabit değerlere sahip enum üyeleriyle karşılaştırıldığında.

Örneğin:

var Boyut;
(işlev (Boyut) {
Boyut[Boyut["Küçük"] = 1] = "Küçük";
Boyut[Boyut["Orta"] = hesaplaBoyut(12)] = "Orta";
Boyut[Boyut["Büyük"] = hesaplaBoyut(5)] = "Büyük";
})(Boyut || (Boyut = {}));

konsol.kayıt(Boyut.Büyük)

Yukarıdaki kod bloğu, Boyut Sıralama. TypeScript'in, JavaScript kodunda measureSize()'den dönüş değerlerini nasıl içermediğine dikkat edin. Bunun yerine, JavaScript'in çalışma zamanında değerleri belirlemesi için orijinal işlev çağrısını içerir.

Enum Değerlerine Erişme

Nesne nokta gösterimini kullanarak enum üyelerinin değerlerine erişebilirsiniz.

Örneğin:

Sıralama Yön {
Yukarı = 0,
Aşağı = 1,
Sol = 2,
Sağ = 3,
}

konsol.log (Yön. Sol) // 2

Ters Eşleme Sayısal Numaraları

Sayısal numaralandırmalarda ters eşleme, karşılık gelen numaralandırma üye adını değerinden getirme yeteneğini ifade eder. Bu, kodunu çözmeniz gerekebilecek sayısal değerlerle çalışırken özellikle yararlı olabilir.

Varsayılan olarak, TypeScript'teki enum değerleri ileriye dönüktür, yani yalnızca bir adla ilişkili değere erişebilirsiniz. Ancak, enum üyesini değerine göre almak için ters eşlemeyi el ile gerçekleştirebilirsiniz.

Örneğin:

Sıralama Yön {
Yukarı = 1,
Aşağı,
Sol,
Sağ
}

işlevgetYönAdı(yönDeğeri: sayı): sicim{
// Ters eşleme
sabit yönAdı = Yön[yönDeğeri];
geri dönmek yönAdı;
}

konsol.log (getDirectionName(1)); // "Yukarı"
konsol.log (getDirectionName(3)); // "Sol"

Bu getYönAdı işlevi, değerini bir dizin olarak kullanarak enum üye adına erişerek ters eşleme gerçekleştirir. fonksiyon alır yönDeğeri bir bağımsız değişken olarak kullanır ve karşılık gelen enum üye adını kullanarak alır Yön[yönDeğeri].

Ters eşleme, sayısal bir değere sahip olduğunuz ve karşılık gelen enum üye adını belirlemeniz gereken senaryolarda kullanışlı olabilir. Numaralandırmalarla hem ileri hem de geri yönde çalışmak için uygun bir yol sağlar.

Numaralandırmaların Birçok Uygulaması Vardır

Numaralandırmaları, switch deyimlerini işleme, işlev parametrelerini tanımlama, verileri eşleme ve seçimleri veya ayarları temsil etme gibi çeşitli senaryolarda kullanabilirsiniz.

İster sınırlı sayıda seçenek kümesini temsil etmeniz, ister karmaşık durum geçişlerini yönetmeniz gerekiyor olsun, TypeScript'teki numaralandırmalar, kodunuzun netliğini ve yapısını geliştirmek için değerli bir araçtır.