TanodTools
TR

JSON'dan TypeScript'e

Örnek bir JSON belgesini, verinizden çıkarılan isteğe bağlı alanlar ve birleşim türleriyle TypeScript arayüzlerine veya tür takma adlarına dönüştürün.

Tamamen tarayıcınızda çalışır

TypeScript

    

Şununla tanımla
Değiştiriciler

Türler yapıştırdığınız örnekten çıkarılır; bu yüzden bir şemayı değil, o örneği betimler: örneğinizde dize olan bir alan başka bir yerde sayı olabilir. Tüm sayılar number olur, tarihler string kalır. Özellik sırası, tam sayı anahtarlarını önce listeleyen JSON.parse'ı izler.

JSON'dan TypeScript nasıl üretilir

  1. Kutuya bir JSON yanıtı veya dosyası yapıştırın. Birkaç dizi öğesi sonucu iyileştirir, çünkü bazı öğelerde eksik olan alanlar isteğe bağlı olur.
  2. En üst düzey türün adını belirleyin, interface veya type seçin ve gerektiği gibi export, readonly veya isteğe bağlı alan algılamasını işaretleyin.
  3. Tanımları kopyalayın veya .ts dosyası olarak indirin. Adlar anahtar adlarınızdan geldiği için bunları gözden geçirin.

JSON örneğinden tür çıkarımı

TypeScript türleri verinin biçimini betimler ve bir JSON yanıtı zaten bir biçim içerir: her anahtar, arkasındaki değerin türü ve nesnelerin nasıl iç içe geçtiği. Bir dönüştürücü örneği dolaşır ve bu biçimi tanımlar halinde yazar; böylece bir API'yi güvenle çağırabilmek için kırk alanı elle yazmanız gerekmez.

En önemli adım, dizilerle ne yapılacağıdır. Nesne dizisindeki her öğe okunur ve biçimleri birleştirilir: her öğede bulunan bir anahtar zorunlu kalır, yalnızca bazı öğelerde bulunan bir anahtar isteğe bağlı olur ve türü farklı olan değerler birleşim türüne dönüşür. Birkaç kayıt içeren bir örneğin, tek kayıt içerenden çok daha iyi türler vermesinin nedeni budur. null değeri, eksik bir anahtardan farklı ele alınır; çünkü alanı okuyan kod için bu ikisi farklı anlamlar taşır.

Çıkarılan türler bir başlangıç noktasıdır, sözleşme değil. Bir dizenin her zaman üç değerden biri olduğunu, bir sayının aslında tam sayı bir kimlik olduğunu ya da tüm örneklerinizde bulunan bir alanın üretimde kaybolabileceğini bilemezler. Sonucu okuyun, kötü çıkan adları değiştirin ve önemli olan türleri sıkılaştırın.

İpuçları

  • Önce örneğinizin düzgün biçimli olduğunu, sözdizimi hatasının tam karakterini gösteren JSON biçimlendir ve doğrula ile denetleyin.
  • Bunun yerine bir YAML yapılandırmasıyla mı çalışıyorsunuz? YAML'dan JSON'a ile dönüştürün ve sonucu buraya yapıştırın.
  • Bir belirtecin (token) yükünü türlemeden önce içine bakmanız mı gerekiyor? JWT çözücü ile çözün.

Sık sorulan sorular

Bir alanın isteğe bağlı olduğuna nasıl karar verir?

Nesne dizisi olduğunda nesneler tek bir biçimde birleştirilir. Bazı öğelerde bulunup hepsinde bulunmayan bir anahtar ? alır. Bazı öğelerde bulunan ama null tutan bir anahtar isteğe bağlı değildir; T | null olur. Her anahtarın zorunlu işaretlenmesini tercih ediyorsanız isteğe bağlı alan algılamasını kapatın.

İç içe türler nasıl adlandırılır?

Her iç içe nesne anahtarından PascalCase olarak adlandırılır; yani billing_address, BillingAddress olur. Dizilerde, anahtar 3 harften uzunsa ve ss, us veya is ile bitmiyorsa öğe türü sondaki "s" harfini atar: users, User verir; address ise AddressItem verir. İki farklı biçim aynı adı isterse ikincisi numaralanır: User ve User2.

Aynı biçimdeki nesnelere ne olur?

Tek bir tanımı paylaşırlar. billing ve shipping ikisi de { street, city } tutuyorsa, ilk göründüğü yerin adını taşıyan tek bir arayüz elde edersiniz. Aynı anahtarlara ama farklı değer türlerine sahip iki nesne farklı biçimlerdir ve ayrı adlar alır.

Boş bir dizi neden unknown[] olarak yazılıyor?

Boş bir dizi örnek içermez; bu nedenle öğeleri hakkında hiçbir şey çıkarılamaz. unknown[] dürüst yanıttır; öğe türünü öğrendiğinizde elle değiştirin. Değerleri karıştıran bir dizi, (string | number)[] gibi bir birleşim türü olur.

Çıktı gerçek API'den farklı olabilir mi?

Evet. Bir örnek yalnızca içerdiği değerleri gösterir. Örneğinizde her zaman bulunan ama üretimde bazen eksik olan bir alan burada zorunlu olur; sabit değerli bir dize de düz string olur. Sıkı doğrulama için bir şema kullanın; hızlı başlangıç için bu çıktıyı kullanıp uyarlayın.

JSON'um yükleniyor mu?

Hayır. Yapıştırdığınız hiçbir şey bir yere gönderilmez; dönüştürme tarayıcınızda çalışır ve sayfa yüklendikten sonra ağ bağlantınızı kesebilirsiniz.