CodeBlanks Logo Icon CodeBlanks

Generic nedir?

Tür parametreli fonksiyonları öğrenirsin.

Generic nedir?

Generic, bir fonksiyonun veya sınıfın çağrıldığında türü parametre olarak almasıdır. Açılı parantez <T> içindeki harf tür parametresidir ve çağrıldığında gerçek türle değişir. Aynı fonksiyon farklı türlerle tür güvenli şekilde çalışır.

function ilk<T>(dizi: T[]): T {
  return dizi[0];
}
const s = ilk<number>([1, 2, 3]);
const m = ilk<string>(["a", "b"]);

Generic olmadan

Generic olmadan her tür için ayrı fonksiyon yazmak gerekir: ilkSayi, ilkMetin, vb. Generic ile tek bir ilk<T> fonksiyonu tüm türlerde çalışır ve derleyici yanlış tür kullanımını yakalar. Bu, kod tekrarını azaltırken tür güvenliğini korur.

Uygulama Son elemanı döndür

son<T> generic fonksiyonunu yaz: parametresi dizi: T[], dönüş türü T. Dizinin son elemanını döndürsün. Sonra son([10, 20, 30]) çağrısının sonucunu console.log ile yazdır.

Başlangıç kodu

index.ts
// son<T>(dizi: T[]): T fonksiyonunu yaz
// dizinin son elemanını döndür
// son([10, 20, 30]) sonucunu console.log ile yazdır

Örnek çözüm

index.ts
function son<T>(dizi: T[]): T {
  return dizi[dizi.length - 1];
}
console.log(son([10, 20, 30]));

Beklenen çıktı

30

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Aşağıdaki fonksiyonda T neyi temsil eder?

index.ts
function ilk<T>(dizi: T[]): T
  • Tür parametresi Doğru cevap
  • Sabit number türü
  • Bir değişken adı
  • Bir interface adı

Açıklama: T bir tür parametresidir; çağrıldığında number veya string gibi gerçek bir türle değiştirilir. Değişken adı veya interface adı değildir.

2 Tür parametresi ekle

Soru
function kimlik<____>(x: T): T {
  return x;
}
Cevap
function kimlik<T>(x: T): T {
  return x;
}

Açıklama: Gövde T kullandığından tür parametresi de T olmalıdır. U veya Type yazılırsa gövdedeki T tanımsız kalır; t ise farklı bir tanımlayıcıdır ve büyük-küçük harf duyarlılığından dolayı yine T tanımsız olur.

3 Generic parçalar

Kavram Anlamı
<T> Tür parametresi bildirimi
ilk<number>(...) Tür argümanı vererek çağrı
T[] Tür parametresi dizi olarak
function ilk Generic fonksiyon adı

Orta seviye bölümündeki tüm dersler