JSON'dan TypeScript'e Dönüştürücü
Bir API yanıtı yapıştırın ve kullanıma hazır TypeScript interface'leri veya type alias'ları alın; iç içe tipler, isteğe bağlı alanlar ve null birleşimleri sizin için çıkarılır.
Tarayıcınızda çalışırKayıt gerekmezHiçbir şey yüklenmez
JSON'dan TypeScript'e nasıl kullanılır?
- Bir JSON örneğini (örneğin bir API yanıtını) sol kutuya yapıştırın veya bir
.jsondosyası açın. - Kök tip adını belirleyin (örneğin
UserveyaApiResponse). interfaceveyatypetanımlarından birini seçin;export,readonlyveya tümü isteğe bağlı alanları açıp kapatın.- Örnekten anlaşılamayan değerler (boş diziler ve null'lar gibi) için
unknown(daha güvenli) veyaanyseçin. - Oluşturulan kodu kopyalayın veya
.tsdosyası olarak indirin.
Tipler nasıl çıkarılır?
- İlkel değerler: dizeler, sayılar ve boolean'lar
string,numbervebooleantiplerine eşlenir. - İç içe nesneler PascalCase ile adlandırılmış kendi interface'lerine dönüşür;
billing_address,BillingAddressolur. - Nesne dizileri tekil adla adlandırılan tek bir öğe tipinde birleştirilir:
users,User[]verir. Bazı öğelerde eksik olan bir anahtar isteğe bağlı olur (key?:). - Null değerler o anahtar için görülen diğer değerlerle birleşir:
string | null. Yalnızcanullolan bir anahtarunknownveyaanytipine düşer. - Karışık diziler
(number | string)[]gibi union dizilerine dönüşür. - Aynı yapılar bir kez tanımlanıp yeniden kullanılır; aynı adı alacak farklı yapılara sayısal bir sonek eklenir.
- Geçerli tanımlayıcı olmayan anahtarlar, örneğin
"first-name"veya"2fa", tırnak içine alınır.
interface mi, type mı?
Düz nesne yapıları için ikisi neredeyse birbirinin yerine kullanılabilir. interface tanımları genişletilebilir ve birleştirilebilir, ayrıca biraz daha anlaşılır derleyici hataları verir. type alias'ları ise union ve mapped type'ları da ifade edebilir. Birçok ekip API modelleri için interface, geri kalan her şey için type kullanır; kod tabanınızın veya linter'ınızın (@typescript-eslint/consistent-type-definitions) beklediğini seçin.
Örneğinizden daha iyi tipler alın
Tipler ancak örnek kadar eksiksiz olabilir. Oluşturucunun isteğe bağlı ve nullable anahtarları tespit edebilmesi için isteğe bağlı alanları içeren bir yanıt ya da birkaç farklı öğe içeren bir dizi yapıştırın. Tarihler ve enum'lar gibi değerler JSON'da düz dize olarak gelir; bunları sonrasında elle daraltın, örneğin status: 'active' | 'disabled'. Çalışma zamanı doğrulaması için oluşturulan tipleri Zod gibi bir şema kütüphanesiyle birlikte kullanın.
Sıkça sorulan sorular
JSON'um yükleniyor mu?
İsteğe bağlı özellikler nasıl tespit ediliyor?
? ile isteğe bağlı olarak işaretlenir. Tek bir nesnede, Tümü isteğe bağlı'yı işaretlemediğiniz sürece her anahtar zorunludur.<code>unknown</code> mı yoksa <code>any</code> mi kullanmalıyım?
unknown daha güvenlidir: TypeScript, değeri kullanmadan önce daraltmanızı zorunlu kılar. any ise o değer için tip denetimini kapatır. Yalnızca tipleri daha sonra iyileştirmeyi planlıyorsanız kullanın.ISO tarihi neden <code>string</code> olarak tipleniyor?
new Date() ile dönüştürüyorsanız modelinizde özelliği Date olarak değiştirin.