TypeScript, JavaScript'in tip güvenli bir üst katmanı olarak ortaya çıkıyor. Temel olarak, statik tip tanımlamaları sayesinde kodun derleme aşamasında hataları yakalayabiliyoruz, bu da büyük projelerde bakım ve ölçeklenebilirliği artırıyor.
İlk adımda, değişkenlere tip eklemek en yaygın kullanım. "let age: number = 30;" gibi bir tanımlama, o değişkenin sadece sayısal değer almasını garanti eder. Fonksiyon parametrelerine ve dönüş tiplerine de aynı şekilde tip ekleyerek, API'lerin beklenen veri yapısını netleştirebiliriz.
Arayüzler (interface) ve tip alias'ları (type) ise nesne yapısını tanımlamanın iki popüler yolu. Interface, özellikle sınıflarla birlikte kullanıldığında güçlü bir sözleşme sunar; tip alias'ları ise birleşik (union) ve kesişim (intersection) tipleriyle daha esnek yapılar oluşturmanıza izin verir.
Generikler (generics) ise fonksiyonların ve sınıfların tip bağımsız çalışmasını sağlar. "function identity<T>(arg: T): T { return arg; }" gibi bir tanım, hangi tipte bir argüman verildiği önemli olmaksızın aynı tipte bir sonuç döndürür. Bu, koleksiyonlar ve veri işleme fonksiyonları için çok kullanışlı.
TypeScript'in en büyük avantajı, JavaScript'e derlendiğinde geriye dönük uyumluluk sağlaması. Yani mevcut bir projeye tip eklemek, kodun çalışmasını bozmaz, sadece ek bir kontrol katmanı ekler.
Siz de projelerinizde tip güvenliğini nasıl sağlıyorsunuz? Hangi stratejilerle tipleri genişletiyorsunuz? Paylaşırsanız, hepimiz için faydalı olur! 😊
TypeScript'e Başlangıç: Temel Kavramlar ve En İyi Pratikler
👁️ 94 görüntüleme💬 1 cevap❤️ 0 beğeni
1 Cevap
Kanka, TypeScript’e yeni başladıysan önce `tsconfig.json`’da `strict: true` açmak bir altın madeni. Bu modda, `noImplicitAny`, `strictNullChecks` ve `strictPropertyInitialization` otomatik devreye girer, yani tip hatalarını derleme zamanında yakalayarak sürpriz bugları önlersin. Ben projelerimde genelde bir “base” config oluşturup, her yeni micro‑service’de sadece `extends` ile çekiyorum; bu sayede ekip içinde tip standartları hep aynı kalıyor.
Bir başka pratik: nesne modelleri için `interface` mi, `type` mi diye takılma; ben genelde dışarıdan gelecek API yanıtlarını `interface` ile tanımlıyorum, çünkü `extends` ve `implements` ile rahat genişletilebiliyor. İçerideki birleştirme (`union`) ya da kesişim (`intersection`) tiplerini ise `type` alias’larıyla hallediyorum; örneğin `type ApiResponse<T> = { data: T } | { error: string }`. Generikleri de sık sık bir “wrapper” fonksiyonunda kullanıyorum; `function safeParse<T>(json: string, validator: (obj: any) => obj is T): T | null` gibi bir yapı, runtime’da da tip güvenliğini sağlıyor. Valla, `eslint-plugin-typescript` ve `prettier` ile birleştirince kodun hem temiz hem de tip‑korumalı oluyor, bakma derlemeden önce bir iki hatayı yakalıyor. Bence bu alışkanlıkları erken edersen, büyük projelerde tip hatalarına takılmadan rahatça ölçeklenebilir kod yazabilirsin.