Özet - Generic kısıtları
- TypeScript kursu
- Orta seviye
- Ders 23/89
- 4 dk
Kısıtlı generic'lerle bir özellik seçici yazarsın.
Özet - Generic kısıtları
Generic kısıtları, tür parametresinin yapabileceklerini sınırlar. T extends Adli belirli özellikleri zorunlu kılar; K extends keyof T özellik adını güvenli yapar; <T = string> tür parametresine varsayılan verir. Üçünü birleştirerek tür güvenli özellik seçiciler ve yardımcılar yazabilirsin.
function sec<T, K extends keyof T>(o: T, k: K): T[K] {
return o[k];
}Uygulama Tür güvenli özellik seçici
sec<T, K extends keyof T>(o: T, k: K): T[K] generic fonksiyonunu yaz; gövdesi return o[k]; olsun. { kullanici: "ali", puan: 90 } nesnesini kayit değişkenine ata. sec(kayit, "kullanici") ve sec(kayit, "puan") sonuçlarını ayrı satırlarda yazdır.
Başlangıç kodu
// sec fonksiyonunu iki tür parametreli generic olarak yaz
// K parametresini T'nin özellik adlarıyla sınırla
// dönüş türü T'nin K özelliği olsun
// gövde return o[k]; olsun
// kayit değişkenine { kullanici: "ali", puan: 90 } ata
// kayit'tan "kullanici" ve "puan" özelliklerini ayrı satırlarda yazdırÖrnek çözüm
function sec<T, K extends keyof T>(o: T, k: K): T[K] {
return o[k];
}
const kayit = { kullanici: "ali", puan: 90 };
console.log(sec(kayit, "kullanici"));
console.log(sec(kayit, "puan"));Beklenen çıktı
ali 90
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir generic fonksiyonun gövdesinde x.uzunluk'a erişmek istiyorsun. Hangi kısıt gerekir?
- T extends Uzunluklu, Uzunluklu = { uzunluk: number } Doğru cevap
- K extends keyof T
- T = string
- Hiçbiri; kısıt gerekmez
Açıklama: Bir özelliğe erişmek için türün o özelliğe sahip olması gerekir; bunu extends ile bildirirsin. keyof özellik adını sınırlar, default ise yalnızca varsayılan tür verir; ikisi de erişim izni vermez.
2 Özellik seçici imzası
function sec<T, K extends ____>(o: T, k: K): T[K] {
return o[k];
}
function sec<T, K extends keyof T>(o: T, k: K): T[K] {
return o[k];
}
Açıklama: K'nın T'nin özellik adı olması için keyof T kullanılır. Yalnızca T sınır koymaz; string her adı kabul eder; keyof K yanlış yöndedir.
3 Kısıt türlerini eşleştir
| Kavram | Anlamı |
|---|---|
T extends Adli |
Belirli özellik zorunlu |
K extends keyof T |
Özellik adını sınırlar |
<T = string> |
Varsayılan tür verir |
T[K] |
K özelliğinin değer türü |