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