...

TypeScript’de Veri Tipleri – Numaralandırma – Enum

Birçok nesne tabanlı dillerde geçerli olan Enum veri tipi artık TypeScript’de de geçerlidir.

En basit haliyle birden fazla metin, sayı veri tipini tek bir koleksiyon içerisinde tanımlaya olanak sağlar.

Üç enum veri tipi vardır.

1. Sayı Numaralandırma – Numeric Enum

Sayı Tabanlıdır. Metin ifadeleri sayı olarak tutar.

enum PrintMedia {
Newspaper,
Newsletter,
Magazine,
Book
}

Örnekteki Enum tipindeki PrintMedia değişkenindeki her bir değişken bir fazla sırayla sayı değeri alır.

Örnekteki çıktı:

Newspaper = 0
Newsletter = 1
Magazine = 2
Book = 3

Enum veri tipinde olacak değişkenlere direk değerde atanabilir. Numaralandırmanın başlangıcı tanımlanabilir. (Aşağıdaki örnekte ilk değişken bir ile başlar, diğer değişkenler sırayla 2,3 ve 4 değerlerini alır.)

enum PrintMedia {
  Newspaper = 1,
  Newsletter,
  Magazine,
  Book
}

Enum üyelerine sıralı değerler atamak gerekli değildir. Herhangi bir değere sahip olabilirler.

enum PrintMedia {
    Newspaper = 1,
    Newsletter = 5,
    Magazine = 5,
    Book = 10
}

Enum, aşağıda gösterildiği gibi, bir fonksiyon parametresi veya dönüş tipi olarak kullanılabilir:

enum PrintMedia {
    Newspaper = 1,
    Newsletter,
    Magazine,
    Book
}

function getMedia(mediaName: string): PrintMedia {
    if (  mediaName === 'Forbes' || mediaName === 'Outlook') {
        return PrintMedia.Magazine;
    }
 }

let mediaType: PrintMedia = getMedia('Forbes'); // returns Magazine

Hesaplamalı Enum – Computed Enum

Enum tanımlamaları fonksiyonlar ve hesaplamalı tanımlar içerebilir. Sadece dikkat edilmesi gereken husus, hesaplamalı tanımlardan sonra gelen değişkene değer ataması yapılmalıdır.

enum PrintMedia {
    Newspaper = 1,
    Newsletter = getPrintMediaCode('newsletter'),
    Magazine = Newsletter * 3,
    Book = 10
}

function getPrintMediaCode(mediaName: string): number {
    if (mediaName === 'newsletter') {
        return 5;
    }
}

PrintMedia.Newsetter; // returns 5
PrintMedia.Magazine; // returns 15

2. Metin İfadeleri Numaralandırma – String Enum

Numeric Enum’a benzerlik gösterir. En büyük farkı otomatik artırma yapamaz. Bireysel olarak tek tek değer ataması yapılmalıdır.

enum PrintMedia {
    Newspaper = "NEWSPAPER",
    Newsletter = "NEWSLETTER",
    Magazine = "MAGAZINE",
    Book = "BOOK"
}
// Access String Enum 
PrintMedia.Newspaper; //returns NEWSPAPER
PrintMedia['Magazine'];//returns MAGAZINE

Heterojen Enum – Heterogeneous Enum

Hem sayı hem de metin ifadesi içeren enum’lardır.

enum Status { 
    Active = 'ACTIVE', 
    Deactivate = 1, 
    Pending
}

Rezerve Enum – Reserve Enum

Bir üyenin değerine ve aynı zamanda üyenin adına erişebileceğinizi gösterir.

enum PrintMedia {
  Newspaper = 1,
  Newsletter,
  Magazine,
  Book
}

PrintMedia.Magazine;   // returns  3
PrintMedia["Magazine"];// returns  3
PrintMedia[3];         // returns  Magazine