Deep partial
- TypeScript kursu
- İleri seviye
- Ders 11/57
- 4 dk
Derinlemesine Partial uygulamasını öğrenirsin.
Deep partial nedir?
DeepPartial, normal Partial'ın aksine iç içe nesnelerin tüm alanlarını da opsiyonel yapar. Mapped type ve conditional type birleştirilerek yazılır: her alan için, eğer nesne ise recursive olarak DerinPartial uygulanır. Bu, derinlemesine yapılandırmayı tür güvenli hale getirir.
type DerinPartial<T> = {
[K in keyof T]?: T[K] extends object
? DerinPartial<T[K]>
: T[K];
};Conditional ile nesne kontrolü
DeepPartial'da T[K] extends object koşulu, alanın nesne olup olmadığını kontrol eder. Nesne ise DerinPartial<T[K]> ile recursive uygulanır; değilse değer olduğu gibi opsiyonel yapılır. Bu sayede primitif alanlar korunurken iç içe nesneler derinlemesine işlenir.
Uygulama DeepPartial yaz ve kullan
DerinPartial adında bir recursive mapped type tanımla: <T> = { [K in keyof T]?: T[K] extends object ? DerinPartial<T[K]> : T[K] }. Ayarlar interface'i baslik: string ve alt: { renk: string } içersin. p değişkeni DerinPartial<Ayarlar> türünde ve değeri { baslik: "test", alt: { renk: "mavi" } } olsun. p.alt.renk değerini console.log ile yazdır.
Başlangıç kodu
// DerinPartial adinda recursive mapped type tanimla
// her alan opsiyonel olsun, nesne ise recursive uygulansin
// Ayarlar interface tanimla
// p nesnesini DerinPartial ile tanimla
// p.alt.renk yazdirÖrnek çözüm
type DerinPartial<T> = {
[K in keyof T]?: T[K] extends object ? DerinPartial<T[K]> : T[K];
};
interface Ayarlar {
baslik: string;
alt: { renk: string; };
}
const p: DerinPartial<Ayarlar> = { baslik: "test", alt: { renk: "mavi" } };
console.log(p.alt.renk);Beklenen çıktı
mavi
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 DeepPartial'ın normal Partial'tan farkı nedir?
- Tür parametresi almaz
- Daha hızlı çalışır
- Yalnızca sayıları opsiyonel yapar
- İç içe nesnelerin alanlarını da opsiyonel yapar Doğru cevap
Açıklama: Partial yalnızca üst düzey alanları opsiyonel yapar; DeepPartial iç içe nesnelere recursive olarak iner ve tüm alanları opsiyonel yapar.
2 Recursive DerinPartial çağrısı
type DerinPartial<T> = {
[K in keyof T]?: T[K] extends object ? ____<T[K]> : T[K];
};
type DerinPartial<T> = {
[K in keyof T]?: T[K] extends object ? DerinPartial<T[K]> : T[K];
};
Açıklama: DeepPartial iç içe nesneler için kendini recursive olarak çağırır; DerinPartial<T[K]> ile alt nesneye uygulanır.
3 DeepPartial kavramları
| Kavram | Anlamı |
|---|---|
Partial<T> |
Sadece üst düzey |
DerinPartial<T> |
İç içe opsiyonel |
keyof T |
T'nin anahtarları |
extends object |
Nesne kontrolü |