# Statik Tipleme

Adres: https://softwaredictionary.org/tr/terimler/static-typing
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-10-03
İngilizcesi: Static Typing
Türkçe karşılığı: statik tür sistemi
Okunuşu: stetik tayping

Kısaca: Statik tipleme, değişken ve ifadelerin türünün program çalışmadan önce, genellikle derleyici tarafından denetlenmesidir; birçok tür hatası erken yakalanır.

## Statik tipleme (static typing) nedir?

Java, C#, Go, Rust, Kotlin ya da TypeScript gibi statik tipli bir dilde derleyici, değerlerin türleriyle tutarlı kullanılıp kullanılmadığını kontrol eder. Sayı beklenen yere string vermek, var olmayan bir metodu çağırmak ya da null olabilecek bir değeri ele almayı unutmak, kod daha hiç çalışmadan hata olarak bildirilebilir.

Türlerin her zaman açıkça yazılması gerekmez. Tür çıkarımı (type inference) derleyicinin bunları kendisinin bulmasını sağlar; böylece `let count = 0` bir etikete gerek kalmadan sayı olarak bilinir. Açık türler yine de fonksiyon imzalarında yaygındır; orada dokümantasyon işi de görür: okuyan kişi gövdeyi okumadan neyin girip neyin çıktığını görebilir.

Faydalar kod tabanı büyüdükçe artar. Editörler doğru otomatik tamamlama ve bir metodu kullanıldığı her yerde yeniden adlandırmak gibi güvenli otomatik refactoring sunabilir; uzaktaki bir çağıranı bozan bir değişiklik de hemen ortaya çıkar. Bedeli ise başta daha fazla tören ve türleri ifade etmek zor olduğunda zaman zaman tür denetleyicisiyle uğraşmaktır.

Sık yapılan bir yanlış, statik tiplemenin güçlü tipleme (strong typing) demek olduğunu düşünmektir. Bunlar ayrı fikirlerdir: statik ile dinamik, türlerin ne zaman kontrol edildiğiyle ilgilidir; güçlü ile zayıf ise değerlerin türler arasında ne kadar serbestçe dönüştürüldüğüyle. C statik ama oldukça zayıf tiplidir; Python ise dinamik ama güçlü tiplidir.

## Önemli noktalar

- Türler program çalışmadan önce, genellikle derleme zamanında kontrol edilir.
- Java, C#, Go, Rust, Kotlin ve TypeScript statik tiplidir.
- Tür çıkarımı sayesinde birçok türün elle yazılması gerekmez.
- Güvenilir otomatik tamamlamayı, refactoring'i ve hataların erken yakalanmasını sağlar.
- Statik ile dinamik, türlerin ne kadar katı değil, ne zaman kontrol edildiğiyle ilgilidir.

## Örnek: Çalıştırmadan önce yakalanan bir tür hatası (TypeScript)

```typescript
function totalPrice(price: number, quantity: number): number {
  return price * quantity;
}

totalPrice(9.99, 3);      // fine

totalPrice("9.99", 3);
// Error: Argument of type 'string' is not assignable to parameter of type 'number'.
// Reported by the compiler and the editor; the code never runs with the bug.

let count = 0;            // inferred as number, no annotation needed
count = "zero";           // Error: Type 'string' is not assignable to type 'number'.
```

## Sık sorulan sorular

**TypeScript statik tipli mi?**

Evet. TypeScript JavaScript'e statik türler ekler ve bunları derleme zamanında kontrol eder. Türler JavaScript'e derlenirken kaldırılır; bu yüzden çalışma zamanında yoktur.

**Statik tipleme bütün hataları önler mi?**

Hayır. Yanlış türler ve eksik alanlar gibi bir hata sınıfını yakalar, ama yanlış mantığı yakalamaz. Kodun doğru şeyi yaptığını kontrol etmek için yine testler gerekir.

**Kademeli tipleme (gradual typing) nedir?**

Dinamik tipli bir dile isteğe bağlı türler eklemektir; böylece bir kod tabanı parça parça türlendirilebilir. JavaScript için TypeScript ve Python için mypy gibi araçlarla kontrol edilen tür ipuçları buna örnektir.

---

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