# Enum (Sabit Değerler Kümesi)

Adres: https://softwaredictionary.org/tr/terimler/enum
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-09-30
Türkçe karşılığı: numaralandırma
Okunuşu: inım ya da inum

Kısaca: Enum, bir siparişin olası durumları gibi sabit ve adlandırılmış bir değerler kümesi tanımlayan bir veri türüdür; kod bu kümenin dışında bir değer kullanamaz.

## Enum nedir?

Enum, yani enumerated type (sayım türü), olası değerleri küçük ve sabit bir adlandırılmış sabitler listesi olan bir türdür. Bir siparişin durumunu her şeyi tutabilecek gevşek bir dize ya da sayı olarak saklamak yerine, tam olarak `Pending`, `Shipped` ve `Delivered` değerlerine sahip `OrderStatus` tanımlarsınız ve derleyici bunun dışındaki her şeyi reddeder. `Color.Red` gibi adlar da kodu, çıplak bir `2` değerine kıyasla kendini belgeleyen hâle getirir.

Enum'lar diller arasında çok farklılık gösterir. C'de enum üyeleri yalnızca adlandırılmış tamsayılardır, bu yüzden sıradan sayılarla karıştırılabilir. Java enum'ları alanları ve metotları olabilen tam birer sınıftır; Rust ve Swift ise her varyantın kendi verisini taşımasına izin vererek enum'ları fonksiyonel dillerin cebirsel veri türleri (algebraic data types) ya da etiketli birleşimler (tagged unions) dediği şeye dönüştürür. TypeScript'te `enum` anahtar sözcüğü vardır, ancak birçok ekip derlemeden sonra ortadan kaybolan `"pending" | "shipped"` gibi bir dize değişmezleri birleşimini tercih eder.

Enum, serbest metin kutusundan çok bir çoktan seçmeli soru gibi çalışır: yanıt listelenen seçeneklerden biri olmalıdır, bu yüzden yazım hataları ve geçersiz değerler erken yakalanır. Enum'lar doğal olarak `switch` ya da `match` deyimleriyle eşleşir; Rust ve Swift gibi dillerde bir durum ele alınmadığında derleyici derlemeyi reddeder, dolayısıyla yeni bir değer eklemek güncellenmesi gereken her yeri ortaya çıkarır.

Enum'lar bazen düz sabitlerle karıştırılır. `const RED = 0` gibi bir sabit grubu değerlere ad verir ama tür güvenliği sağlamaz, çünkü renk beklenen yere hâlâ herhangi bir sayı aktarılabilir. Enum ise kümenin kendisini bir tür yapar; böylece `Color` alan bir fonksiyon yalnızca üyelerinden birini alabilir.

## Önemli noktalar

- Enum, sabit bir adlandırılmış değerler kümesine sahip bir türdür.
- Geçersiz değerleri önler ve sihirli sayılardan ya da dizelerden daha okunaklıdır.
- C'de enum'lar adlandırılmış tamsayılardır; Java, Rust ve Swift'te metot ya da veri taşıyabilirler.
- Kapsamlı `match` veya `switch` denetimleri, yeni bir değer eklendiğinde eksik durumları yakalar.

## Örnek: TypeScript'te dize tabanlı bir enum

```typescript
enum OrderStatus {
  Pending = "PENDING",
  Shipped = "SHIPPED",
  Delivered = "DELIVERED",
}

function label(status: OrderStatus): string {
  switch (status) {
    case OrderStatus.Pending: return "Waiting to ship";
    case OrderStatus.Shipped: return "On the way";
    case OrderStatus.Delivered: return "Arrived";
  }
}

label(OrderStatus.Shipped); // "On the way", while label("LOST") won't compile
```

## Sık sorulan sorular

**Dizeler yerine ne zaman enum kullanmalıyım?**

Bir değerin durumlar, roller ya da yönler gibi küçük ve bilinen bir kümeden biri olması gerektiğinde enum kullanın. Yazım hatalarını derleme zamanında yakalar ve editörlerin seçenekleri otomatik tamamlamasını sağlar; serbest biçimli dizeler ise her şeyi kabul eder.

**TypeScript'te enum kullanmalı mıyım?**

TypeScript enum'ları da, dize değişmezi birleşimleri de işe yarar. Enum'lar çalışma zamanında gerçek bir JavaScript nesnesi üretir; `"admin" | "user"` gibi bir birleşim ise yalnızca derleme zamanında vardır, bu yüzden birçok kod tabanı basit durumlarda birleşimleri tercih eder.

**Enum'ların metotları olabilir mi?**

Bazı dillerde evet. Java, Kotlin, Swift ve Rust enum'ların metot tanımlamasına izin verir; Rust ve Swift enum'ları ayrıca her varyantta farklı veri taşıyabilir. C enum'u ise yalnızca adlandırılmış tamsayı sabitleri kümesidir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
