Hata Yönetimi & Gelişmiş Tipler
Hata Yönetimi & Gelişmiş Tipler: Definitely Typed & @types Packages @types paketi, yurt dışından gelen bir cihazın çeviri kitapçığı gibidir — cihazın kendisi (JavaScript kütüphan
Definitely Typed & @types Packages
@types paketi, yurt dışından gelen bir cihazın çeviri kitapçığı gibidir — cihazın kendisi (JavaScript kütüphanesi) hiçbir dile çevrilmemiştir ama yanına eklenen kitapçık (DefinitelyTyped'dan gelen @types paketi) 'bu düğmeye basarsan şu olur, bu fonksiyon şu parametreleri ister' der. Peki kütüphane zaten çalışıyorsa, sadece tip bilgisi için neden ayrı bir paket kurulsun? Çünkü TypeScript'in editördeki otomatik tamamlama ve derleme-anı hata yakalama gücü, ancak fonksiyonların hangi parametreleri beklediğini, neyi döndürdüğünü bilmesiyle çalışır — çeviri kitapçığı olmadan TypeScript o kütüphaneyi 'her şey olabilir' (any) olarak görür ve tüm tip güvenliği orada kaybolur. Java'da bu sorun yoktur çünkü her .jar dosyası zaten kendi tip bilgisini (.class dosyalarında) taşır; JavaScript ekosisteminde tip bilgisi sonradan eklenen ayrı bir katmandır. QA'da somut faydası: `@types/node` kurulu olmadan `fs.readFileSync` çağırdığınızda TypeScript bu fonksiyonun ne döndürdüğünü bilemez ve hatalı kullanım derleme anında hiç yakalanmaz; paket kurulduğunda aynı hata IDE'de anında görünür.
Bazı kütüphaneler TypeScript ile yazılmış ve kendi .d.ts tip tanım dosyalarını içerir — Playwright ve axios buna örnek. Eski veya saf JavaScript kütüphaneleri için DefinitelyTyped topluluk deposu @types paketleri sağlar.
Micro Lab: TypeScript kod yazma
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
@types paketleri — neden gerekli?
@playwright/test ve axios kendi .d.ts dosyalarını içerir — @types gerekmez
Eski JS kütüphaneleri
node-fetch gibi eski kütüphaneler @types/node-fetch ile tip tanımı alır
package.json'da "types" veya "typings" alanına bak — varsa @types gerekmez
Bir npm paketinin kendi tipini sağlayıp sağlamadığını kontrol etme adımları:
npm install ile paketi kur
package.json'da "types" alanını ara
"types" varsa @types paketi gerekmiyor