ProgramlamaFullstack Geliştirici / Frontend Geliştirici

TypeScript'te geri çağırma (callback) işlevinin tiplendirmesi nasıl çalışır ve callback'lerin parametreleri ile döndürdüğü değerler için tiplendirme sırasında neler göz önünde bulundurulmalıdır?

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

Cevap

TypeScript'te geri çağırma fonksiyonlarının tiplerini net bir şekilde tanımlamak önerilir. Parametrelerin ve dönen değerlerin tiplerini belirlemek, hataları önlemeye yardımcı olur:

type Callback = (event: string, id: number) => boolean; function useCallback(cb: Callback) { // ... }
  • Tüm parametreler ve dönen değer açık bir şekilde tipe tabi tutulmalıdır.
  • Eğer fonksiyon void (hiçbir değer döndürmüyor) dönebilir ise, bu belirtilmelidir: () => void.
  • Closure'lar, this ve aşırı yükleme de tiplendirme sırasında dikkate alınmalıdır.
  • Eğer callback ile çalışan bir fonksiyon dışsal etkileşimlerde (örneğin, React/Node.js) yer alıyorsa, tiplerin üçüncü taraf deklarasyonları ile uyuşması gerekmektedir.

İkna Edici Olmayan Soru

TypeScript otomatik olarak çıkarmalar yapabilecekken, geri çağırma fonksiyonunun parametreleri ve dönüş değerlerinin tiplerini belirtmek zorunlu mudur?

Cevap: Zorunlu değildir, TypeScript callback argümanlarının tiplerini çıkarabilir, ancak kamu API'leri ve karmaşık bileşen fonksiyonları için tüm türlerin açık bir şekilde belirtilmesi oldukça arzu edilir. Bu, desteği kolaylaştırır ve fonksiyon sözleşmeleri değiştiğinde istenmeyen hataları önler.

Konuyla İlgili Gerçek Hata Örnekleri


Hikaye

Projede, geri çağırmanın dönen değeri açıkça tiplenmeden kullanılıyordu ve geliştiricilerden biri, beklenen boolean yerine bir string döndürmeye başladı. Bu, varsayılan any nedeniyle derleme aşamasında hata vermedi, ancak fonksiyonun işleyiş mantığı bozuldu ve üretimde bir hata meydana geldi.


Hikaye

Büyük bir React projesinde, event callback'lerinin parametrelerinin açıkça tiplenmesi unutuldu. Yeni React sürümüne geçişte olay tipleri değişti ve kod hata ile derlenmeye başladı. Tüm sayfalardaki geri çağırma fonksiyonu acilen düzeltilmek zorunda kalındı.


Hikaye

Node.js uygulamasında, asenkron fonksiyonla çalışan callback tipi belirtilmemişti: alınan değer, string olarak yanlış yorumlandı, oysa bir error nesnesiydi. Tiplerin uyuşmaması, hataların düzgün bir şekilde işlenmesini engelledi.