ProgramlamaFrontend geliştirici

TypeScript'in JavaScript'e kıyasla katı tip kontrolünü nasıl uyguladığını açıklayın. Temel farklar nelerdir ve bu özellik büyük projelerde ne sağlıyor?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap.

TypeScript, JavaScript'in üzerinde bir katman olup, statik (katı) tip kontrolü sağlar. Bu, tip kontrolünün çalıştırma sırasında değil, derleme aşamasında gerçekleştiği anlamına gelir.

Temel farklar:

  • Statik tip kontrolü: değişkenler, fonksiyon parametreleri, döndürülen değerler açıkça tanımlanabilir.
  • Varsayılan tipler (type inference): değişkenin tipi, atanan değere dayalı olarak dolaylı olarak belirlenir.
  • API birleştirmesi: IDE ve kod analiz araçları, tipleri gösterebilir, alanları otomatik tamamlayabilir, hatalar hakkında uyarılarda bulunabilir.

Büyük projelerdeki avantajlar:

  • Tek tip standart, daha az hata.
  • Daha hızlı ve güvenli yeniden yapılandırma.
  • Takım çalışmasını kolaylaştırır.

Örnek:

type User = { name: string; age: number; } function greet(user: User): string { return 'Merhaba, ' + user.name; } const u: User = { name: 'Ivan', age: 30 }; greet(u); // Tamam

Kurnaz soru.

Soru: TypeScript projesinde any tipiyle bir değişken tanımlamak mümkün müdür ve bu proje katı tip kontrolünün avantajlarını kaybeder mi?

Cevap:

Evet, TypeScript any tipinin kullanılmasına izin verir; bu, değişken için tip kontrolünün yokluğuna eşdeğerdir. Eğer sık sık any kullanırsanız, bu TypeScript'in temel avantajı olan katı tip kontrolünü zayıflatır ve JavaScript'te olduğu gibi çalıştırma zamanı hatalarıyla karşılaşma riskini artırır.

Örnek:

let data: any = 'test'; data = 42; // Hata oluşmayacak, ama sorunlara yol açabilir

Konuyla ilgili yanlış anlamalar yüzünden gerçek hata örnekleri.


Hikaye

Geliştirici, karmaşık nesneler için hızlıca ilerlemek amacıyla any tipini sık sık kullanıyordu. Sonuç olarak, bir gün eksik alanlara sahip bir nesne geldiğinde uygulama beklenmedik bir şekilde çökmüştü: tip kontrolü yokluğu nedeniyle bu hata üretime gitmişti.


Hikaye

Büyük bir projede iki farklı mikro hizmet arasında mesajlaşılıyordu. Hizmetlerden biri nesne yapısını değiştirdi, ancak TypeScript bu konuda uyarıda bulunmadı, çünkü tip any olarak açıkça tanımlanmıştı. Hata, kullanıcı şikayetleri sonucunda bir ay sonra bulundu.


Hikaye

Genç bir geliştirici, genel bir fonksiyonun döndürülen değerinin tipini tanımlamadı ve otomatik tip çıkarımına güvendi. Yeniden yapılandırma sonrasında diğer tarafta tip beklentileri çalışmadı ve proje genelinde hata zincirleri oluştu.