Generic fonksiyonlar
- TypeScript kursu
- Orta seviye
- Ders 16/89
- 4 dk
Generic fonksiyon tanımlamayı öğrenirsin.
Generic fonksiyon tanımı
Generic fonksiyon, adından hemen sonra <T> ile tür parametresi alır. Bu parametre fonksiyon imzasının her yerinde kullanılabilir: parametre türü, dönüş türü veya gövde içinde. Tür parametresi, fonksiyonu her tür için yeniden kullanılabilir kılar.
function sarma<T>(x: T): T[] {
return [x];
}
const n = sarma(5); // number[]
const m = sarma("merhaba"); // string[]Açık vs çıkarımlı tür
Tür parametresinin açıkça yazılması zorunlu değildir; TypeScript argümandan çıkarım yapar. Yine de okunabilirlik için veya çıkarımın yetersiz kaldığı durumlarda sarma<number>(5) biçiminde açık tür argümanı verilebilir. İki yazım da aynı sonucu üretir.
Uygulama İki değeri birleştir
birlestir<T> generic fonksiyonunu yaz: iki parametre a: T ve b: T, dönüş türü T[]. İki değeri bir dizi olarak döndürsün. Sonra birlestir(3, 5) çağrısının sonucunu console.log ile yazdır.
Başlangıç kodu
// birlestir<T>(a: T, b: T): T[] fonksiyonunu yaz
// [a, b] dizisini döndür
// birlestir(3, 5) sonucunu console.log ile yazdırÖrnek çözüm
function birlestir<T>(a: T, b: T): T[] {
return [a, b];
}
console.log(birlestir(3, 5));Beklenen çıktı
[ 3, 5 ]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Aşağıdaki çağrıda tür argümanı açıkça verilmemiş. Ne olur?
function sarma<T>(x: T): T[] { return [x]; }
const n = sarma(5);- Derleme hatası verir
- T any olur
- T string olur
- TypeScript T'yi number olarak çıkarır Doğru cevap
Açıklama: TypeScript, argüman olan 5'in number olmasından T'yi çıkarır. Bu yüzden açık tür argümanı yazmak zorunlu değildir.
2 Açık tür argümanı
function kimlik<T>(x: T): T { return x; }
const n = kimlik<____>(42);
function kimlik<T>(x: T): T { return x; }
const n = kimlik<number>(42);
Açıklama: 42 bir number olduğundan tür argümanı da number olmalıdır. string veya boolean derleme hatası verir; T ise çağrı yerinde tanımsızdır.
3 Generic fonksiyon parçaları
| Kavram | Anlamı |
|---|---|
function ad<T> |
Generic fonksiyon başlığı |
<T> |
Tür parametresi bildirimi |
kimlik<number>(42) |
Açık tür argümanı |
kimlik(42) |
Çıkarımlı tür argümanı |