« Tüm yayınlar

JSON'dan TypeScript Üretirken Optional Alan Tuzağı

Çoğu JSON-to-TypeScript aracı yalnızca ilk örneği baz alarak optional alanları yanlış tiplendirir; doğru çözüm tüm dizi elemanlarını birleştirmektir.

JSON'dan TypeScript arayüzü üreten pek çok ücretsiz araç, bir dizi içindeki ilk elemana bakarak yapı çıkarır. Gerçek API yanıtlarında bazı kayıtlarda olmayan alanlar (ör. SSO ile kayıt olan kullanıcıda eksik e-posta) bu yüzden zorunlu (`required`) olarak işaretlenir; sonuç derlenen ama yanlış bir tip olur ve hata ancak çalışma zamanında `undefined` şeklinde ortaya çıkar.

Doğru yaklaşım, dizideki tüm elemanların anahtarlarını birleştirmektir: bir alan bazı kayıtlarda yoksa `key?: T` olarak, farklı kayıtlarda farklı tiplerde görünüyorsa union tip (`number | string`) olarak üretilmelidir. Bu birleştirme mantığı, iç içe dizilerde de aynı şekilde ve tekrarlı olarak uygulanmalı; alt seviyede tespit edilen optionality, üst seviyede tekrar birleştirilirken kaybolmamalıdır. Ayrıca aynı yapıya sahip iç içe nesneler (örneğin `billingAddress` ve `shippingAddress`) tek bir isimlendirilmiş arayüzde birleştirilerek tekrar üretim önlenmelidir.

Bunun yanında boş dizilerin `any[]` yerine `unknown[]` olarak çıkarılması, geçersiz tanımlayıcı içeren anahtarların otomatik tırnaklanması ve `null` değerlerin sessizce yok sayılmadan açıkça ele alınması gibi ayrıntılar da güvenilir bir dönüştürücüyü ayırt eder. Skojio'nun JSON-to-TypeScript aracı, tüm bu birleştirme ve kenar durum kurallarını tarayıcı içinde, veri gönderimi olmadan uygulayarak bu yaygın hata sınıfını hedefler.

» KaynakDev.to