UTILS.
%100 tarayıcıda
📘

JSON Schema'dan TypeScript'e

Bir JSON Schema'yı (draft-07 veya 2020-12) TypeScript arayüzlerine ve tip takma adlarına derleyin; required, enum, $ref, dizi ve birleştiricileri işleyerek.

çıktı

Bu araç hakkında

JSON Schema'dan TypeScript'e aracı, bir JSON Schema belgesini TypeScript arayüzlerine ve tip takma adlarına derler; popüler json-schema-to-typescript kütüphanesinin yaptığını bir araç zinciri kurmadan yapar. JSON örnek dönüştürücülerinin aksine bu araç gerçek bir şema okur: şema nesnesini dolaşır ve type:'object'ı, required'da listelenen anahtarların zorunlu olduğu, geri kalanın ? ile işaretlendiği bir arayüze dönüştürür.

Her şey tarayıcınızda JSON.parse ve düz JavaScript ile yerel olarak ayrıştırılır ve üretilir, böylece şemanız asla sayfadan ayrılmaz. enum'lu string şemaları string değişmezlerinden oluşan bir birleşim olur; düz string, number/integer, boolean ve null TypeScript karşılıklarına eşlenir; diziler T[] olur (items bir dizi olduğunda bir tuple). Birleştiriciler desteklenir — allOf bir kesişim (A & B) olur ve anyOf / oneOf birleşimler (A | B) olur — ve null olabilen bir type:[T,'null'] T | null olur.

Başvurular ada göre çözülür: #/definitions/X veya #/$defs/X'e işaret eden $ref adlandırılmış bir tip başvurusu üretir ve her tanım kendi export interface veya export type'ı olarak üretilir. additionalProperties bir dizin imzası [key: string]: T ekler. Kök tip adı, şemanın title'ına veya $id'sine geri döner. Arayüz mü yoksa type mı çıktısı verileceğini ve şema description dizelerinin JSDoc /** */ yorumları olup olmayacağını değiştirin. Sonucu kopyalayın veya bir .ts dosyası indirin.

Sık sorulan sorular

Hangi JSON Schema özellikleri desteklenir?
properties ve required içeren object, değişmez birleşimler olarak string enum'ları, number/integer/boolean/null, diziler (tuple'lar dahil), allOf/anyOf/oneOf birleştiricileri, definitions veya $defs'e $ref, dizin imzası olarak additionalProperties ve ["string","null"] gibi null olabilen tip dizileri.
$ref ve definitions nasıl işlenir?
#/definitions/Address (veya #/$defs/Address) gibi bir $ref, adlandırılmış bir Address tipine başvuru olur ve definitions veya $defs altındaki her giriş kendi export interface veya export type'ı olarak üretilir, böylece başvurular çıktı içinde çözülür.
Kök tipin adını ne belirler?
Ayarladıysanız kök adı kutusu, aksi halde şemanın title'ı, aksi halde $id'sinin son parçası, aksi halde Root. Tanım adları definitions veya $defs içindeki anahtarlarından gelir ve PascalCase'e dönüştürülür.
Şema açıklamalarını koruyabilir miyim?
Evet. JSDoc açıkken (varsayılan), şemadaki veya bir özellikteki herhangi bir description dizesi, ilgili tip veya alanın üstünde bir /** ... */ yorumu olarak üretilir ve belgeleme üretilen TypeScript'te korunur.

Daha fazla araç