Ana içeriğe geç

Statik Tipleme

İngilizcesi
Static Typing
Türkçe karşılığı
statik tür sistemi
Okunuşu
stetik tayping
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/static-typing

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.

Sık karşılaştırılanlar

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar