Utility Tipleri & Keyof

Utility Tipleri & Keyof: Utility type'lar, bir terzinin elinde hazır bulunan kalıplara benzer — orijinal kıyafeti (tipi) sıfırdan yeniden dikmek yerine, var olan kalıbı alıp 'tüm

Utility type'lar, bir terzinin elinde hazır bulunan kalıplara benzer — orijinal kıyafeti (tipi) sıfırdan yeniden dikmek yerine, var olan kalıbı alıp 'tüm düğmeleri çıkar' (Partial), 'sadece yakayı al' (Pick) veya 'kolu kes' (Omit) der ve yeni bir tip türetirsiniz. Peki bu dönüşümleri neden elle, her seferinde yeni bir interface yazarak yapmıyoruz? Çünkü `User` tipinden türeyen `UpdateUserPayload` (tüm alanlar opsiyonel) gibi bir tip, User değişince elle senkronize tutulması gereken ayrı bir kopya olur — unutmak çok kolaydır; `Partial ` ise orijinal tip değiştikçe otomatik güncellenir. Java'da bu işlemler genelde manuel yeni sınıflar yazarak veya kütüphane (örn. Lombok) ile yapılırdı, TypeScript bunu dile gömülü olarak sunar. QA'da somut faydası: bir test senaryosunda kullanıcının sadece `email` alanını güncellediğiniz bir PATCH isteği için `Partial ` kullanırsanız, diğer alanları zorunlu kılan eski tip hatası vermez ama yine de yanlış bir alan adı yazarsanız derleyici bunu yakalar.

Micro Lab: TypeScript kod yazma

TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.

Utility tipler — tip cerrahi araçları

Pick sadece o alanları alır; Omit o alanı çıkarır

Partial tüm alanları opsiyonel yapar — güncelleme payload'ları için ideal

Record — anahtar-değer haritası tipi oluşturur

Kullanım senaryolarına göre doğru utility tip eşleşmesini sırala:

API güncelleme payload'ı → Partial

Sadece id+name göster → Pick

Şifre hariç tüm alanlar → Omit

Test sonuçları haritası → Record

function updateTest(id: number, changes: Partial >) imzasında ne yapar Partial >?

id dışındaki tüm TestCase alanlarını opsiyonel yapar — sadece değişenleri gönder