typealias Kotlin'de mevcut bir tür (sınıf, arayüz, fonksiyon, generic tür vb.) için alternatif bir ad ilan etme mekanizmasıdır. Kullanım alanları:
Kısıtlamalar:
Uygulama örneği:
typealias ClickHandler = (View, MotionEvent) -> Unit fun setClickHandler(handler: ClickHandler) { // ... } val handler: ClickHandler = { view, event -> // İşleme mantığı }
Destek ve okunabilirlik:
Soru: "Kotlin'deki typealias'lar derleyici açısından yeni türler midir ve değişkenlerin değerlerini kısıtlamak için kullanılabilir mi?"
Cevap: Hayır, typealias sadece bir tür eş anlamlısıdır. Yeni bir tür oluşturmazlar ve derleme aşamasında herhangi bir ek kontrol sağlamazlar. Typealias türündeki tüm fonksiyonlar, değişkenler ve parametreler aynı orijinal türdür.
Örnek:
typealias UserId = String typealias Email = String fun process(id: UserId) {} fun process(email: Email) {} process("abc@def.com") // Hata yok - ayrım yapılamaz!
Hikaye
Farklı varlıkların (UserId, OrderId) tanımlayıcıları için typealias kullandık, derleyicinin bunları ayırt edeceğini düşündük, ancak gerçekte değerleri birbirine aktararak derleme hatası olmadan karışıklığa ve hatalara sebep olduk.
Hikaye
Eski API'den geçişte karmaşık lambda ifadelerine typealias atadık, ancak belgelerde yeni tanımları belirtmedik. Sonuç olarak, programcılar alias'ın (örneğin, Loader) ne anlama geldiğini anlamadı ve yanlış kullandılar, bu da çalışma zamanı hatalarına yol açtı.
Hikaye
Bir projede typealias ViewClickHandler'ı farklı dosyalarda farklı imzalarla yeniden tanımladık, aliasların küresel olarak bağlantılı olacağını düşündük. Sonuç olarak, otomatik belge oluşturma sırasında tekrar eden içerikler ve derleme sırasında ad çatışmaları oluştu.