# Tür çıkarımı

Adres: https://softwaredictionary.org/tr/terimler/type-inference
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-09-30
İngilizcesi: Type Inference
Türkçe karşılığı: tip çıkarımı
Okunuşu: tayp infırıns

Kısaca: Tür çıkarımı, derleyicinin bir değişkenin ya da ifadenin türünü otomatik olarak belirlediği bir özelliktir; her tür bildirimini yazmanız gerekmez.

## Tür çıkarımı (type inference) nedir?

Tür çıkarımı, derleyicinin ya da tür denetleyicisinin değerlerin nasıl oluşturulup kullanıldığına bakarak türleri sizin yerinize belirlemesi demektir. TypeScript'te `let count = 5` yazarsanız, açık bir bildirim olmadan `count` değişkeninin bir `number` olduğunu bilir ve sonradan ona bir dize atarsanız hata bildirir. Kod hâlâ statik türlüdür; yalnızca elle daha az tür yazarsınız.

Derleyici türleri birkaç ipucundan çıkarır: bir değişkenin başladığı değer, bir fonksiyonun `return` deyimleri, generic bir fonksiyona aktarılan argümanlar ve `map`'e verilen bir callback gibi bir ifadenin içinde bulunduğu bağlam. TypeScript, Kotlin, Swift, Rust, Go ve Scala yerel değişkenlerin türlerini çıkarır, Java ve C# `var` sunar, C++'ta `auto` vardır ve Haskell ile OCaml gibi fonksiyonel diller neredeyse bir programın tamamının türlerini çıkarabilir.

Bu, tanımadığı bir sözcüğün anlamını çevresindeki cümleden çıkaran bir okuyucuya çok benzer. Çıkarım kodu kısa ve okunaklı tutar, ancak birçok ekip yine de fonksiyon parametrelerine, genel dönüş türlerine ve dışa aktarılan API'lere açık türler yazar; çünkü bu bildirimler niyeti belgeler ve daha net hata mesajları üretir.

Tür çıkarımı sıklıkla dinamik türlemeyle karıştırılır. JavaScript ya da Python gibi dinamik türlü bir dilde türler yalnızca program çalışırken denetlenir ve bir değişken şimdi bir sayı, sonra bir dize tutabilir. Çıkarımda ise türler sabittir ve program çalışmadan önce denetlenir; derleyici onları yalnızca sizin yerinize doldurur. Hiçbir ipucu bulamadığında, örneğin bildirimi olmayan bir fonksiyon parametresinde, TypeScript `any` türüne geri döner ve `noImplicitAny` seçeneği bunu hata olarak bildirir.

## Önemli noktalar

- Tür çıkarımı, derleyicinin açık bildirim olmadan türleri belirlemesini sağlar.
- Çıkarımlı kod hâlâ statik türlüdür ve çalışmadan önce denetlenir.
- Türler ilk değerlerden, return deyimlerinden, generic argümanlardan ve bağlamdan çıkarılır.
- Açık tür bildirimleri fonksiyon parametrelerinde ve genel API'lerde yararlı olmaya devam eder.
- Çıkarım dinamik türleme değildir: çıkarılan bir tür sonradan değişemez.

## Örnek: TypeScript'te çıkarılan türler

```typescript
// No annotations, but every type is known at compile time
let count = 5;                   // inferred as number
const names = ["Ada", "Linus"];  // inferred as string[]

function double(x: number) {
  return x * 2;                  // return type inferred as number
}

// name is inferred as string, lengths as number[]
const lengths = names.map((name) => name.length);

count = "five"; // Error: Type 'string' is not assignable to type 'number'.
```

## Sık sorulan sorular

**Tür çıkarımı dinamik türlemeyle aynı şey midir?**

Hayır. Dinamik türlemede türler program çalışırken denetlenir ve bir değişken tür değiştirebilir. Tür çıkarımında ise derleyici program çalışmadan önce sabit türleri belirler; bu yüzden tür hataları yine erken yakalanır.

**Tür çıkarımına mı güvenmeliyim, yoksa türleri açıkça mı yazmalıyım?**

Yaygın uygulama, yerel değişkenleri ve basit ifadeleri çıkarıma bırakmak; fonksiyon parametreleri, genel dönüş türleri ve dışa aktarılan API'ler için ise açık türler yazmaktır. Bu, kodu kısa tutarken önemli sınırları belgeler.

**Python'da tür çıkarımı var mı?**

Python'un kendisi dinamik türlüdür, ancak mypy gibi statik tür denetleyicileri kodunuzdan ve tür ipuçlarınızdan türleri çıkarır. Örneğin `x = 5` sonrasında `x`'in bir `int` olduğunu bilirler.

---

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