CodeBlanks Logo Icon CodeBlanks

Meydan okuma 2: Generic'ler

Generic'ler ve kısıtları kullanarak bir görev çözersin.

Generic'ler meydan okuması

Bu meydan okumada generic fonksiyonlar ve kısıtlarını birleştiren görevler çözeceksin. <T> ile tür parametresi tanımlamayı, extends ile kısıt getirmeyi ve keyof ile anahtarları kullanmayı öğrendin. Generic'ler tür güvenliğini koruyarak kodun her türle çalışmasını sağlar.

Uygulama uzunluk generic fonksiyonu

uzunluk adında generic bir fonksiyon tanımla: <T extends { length: number }>(x: T): number. Gövdesi return x.length olsun. uzunluk("merhaba") çağrısı sonucunu console.log ile yazdır.

Başlangıç kodu

index.ts
// uzunluk adinda generic fonksiyon
// T parametresi length ozelligi olanlarla sinirli
// x.length degerini dondur
// "merhaba" ile cagir

Örnek çözüm

index.ts
function uzunluk<T extends { length: number }>(x: T): number {
  return x.length;
}
console.log(uzunluk("merhaba"));

Beklenen çıktı

7

Uygulama keyof ile alan erişimi

al adında generic bir fonksiyon tanımla: <T, K extends keyof T>(obj: T, anahtar: K): T[K]. Gövdesi return obj[anahtar] olsun. kisi nesnesi { ad: "Ayşe", yas: 30 } olsun. al(kisi, "ad") çağrısı sonucunu console.log ile yazdır.

Başlangıç kodu

index.ts
// al adinda generic fonksiyon
// iki tür parametresi T ve K
// K T'nin anahtarlarindan biri olsun
// obj[anahtar] degerini dondur
// kisi nesnesi tanimla
// al ile "ad" al ve yazdir

Örnek çözüm

index.ts
function al<T, K extends keyof T>(obj: T, anahtar: K): T[K] {
  return obj[anahtar];
}
const kisi = { ad: "Ayşe", yas: 30 };
console.log(al(kisi, "ad"));

Beklenen çıktı

Ayşe

Soru ve cevaplar

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

1 Generic bir fonksiyonda tür parametresinin belirli bir yapıya sahip olmasını sağlamak için ne kullanılır?

  • readonly
  • implements
  • abstract
  • extends kısıtı Doğru cevap

Açıklama: extends kısıtı, tür parametresinin belirli bir yapıya veya türe sahip olmasını zorunlu kılar; örneğin <T extends { length: number }>.

2 extends kısıtı

Soru
function uzunluk<T ____ { length: number }>(x: T): number {
  return x.length;
}
Cevap
function uzunluk<T extends { length: number }>(x: T): number {
  return x.length;
}

Açıklama: Generic kısıt için extends anahtar kelimesi kullanılır; implements sınıflar içindir, keyof anahtarlar içindir.

3 Generic kavramları

Kavram Anlamı
<T> Tür parametresi
extends Kısıt
keyof Anahtar kümesi
default Varsayılan tür

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