Meydan okuma 2: Generic'ler
- TypeScript kursu
- Orta seviye
- Ders 87/89
- 6 dk
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
// uzunluk adinda generic fonksiyon
// T parametresi length ozelligi olanlarla sinirli
// x.length degerini dondur
// "merhaba" ile cagirÖrnek çözüm
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
// 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
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ı
function uzunluk<T ____ { length: number }>(x: T): number {
return x.length;
}
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 |