Sări la conținut
Complet local

Tip TypeScript la JSON Schema

Convertiți o interfață sau alias de tip TypeScript la JSON Schema.

Intrare
Ieșire

Tip TypeScript la JSON Schema

Lipiți o interfață TypeScript sau alias de tip și acest instrument generează JSON Schema echivalent, gata pentru a valida incărcări API, fișiere de configurare sau orice alte date JSON care trebuie să corespundă definițiilor dvs. de tip. Este construit pentru dezvoltatori care descriu deja formele de date în TypeScript și doresc un schema fără să rescrie una de la zero sau să configureze o etapă de construire.

Alegeți între JSON Schema draft-07 și dialectul mai nou 2020-12, deoarece validatorii și instrumentele încă diferă cu privire la care așteaptă. Uniunile cu literale de șir precum 'active' | 'inactive' pot fi redate fie ca o enumerare, fie ca anyOf de valori const, iar puteți cere obiectelor să respingă proprietățile necunoscute, să transformați comentariile doc în câmpuri de descriere, sau să extrageți interfețe numite într-un bloc $defs (sau definitions) referențiat prin $ref în loc să fie inline peste tot unde sunt utilizate.

Arrays, tuple-uri, tipuri Record și Map, și uniuni care includ null sunt tratate în modul în care TypeScript le utilizează de fapt — un câmp anulabil devine o matrice de tip sau o ramură anyOf în loc să fie tăcut eliminat. Construcții fără echivalent JSON Schema, cum ar fi metode, tipuri de funcție sau parametri generici nerezolvați, sunt convertite cât mai permisiv posibil și enumerate ca avertismente sub rezultat, astfel încât nimic să nu eșueze în mod silențios.

Tot se execută local în browserul dvs.; definițiile dvs. de tip și schema generată nu sunt încărcate nicăieri. Copiați rezultatul, descărcați-l ca fișier .txt, sau trimiteti-l direct la intrarea unui alt instrument pentru a continua lucrul la el.

FAQ

Ce părți ale TypeScript poate converti?
Interfețe, aliasuri de tip, literale de obiecte imbricate, arrays, tuple-uri, Record/Map/Set, Date, Partial/Required/Pick/Omit, și uniuni inclusiv uniuni de literale de șir și null. Construcții fără echivalent JSON Schema, cum ar fi metode și tipuri de funcție, sunt omise și enumerate ca avertismente.
Care este diferența dintre draft-07 și 2020-12?
Ambele sunt dialecte JSON Schema. 2020-12 este cel actual și folosește $defs și prefixItems pentru tuple-uri, în timp ce draft-07 folosește definitions și un array de items. Alegeți cel pe care validatorul dvs. îl așteaptă.
Ce se întâmplă cu proprietățile marcate cu '?'?
Sunt lăsate în afara arrayului required al schemei, deci schema generată se potrivește cu propria noțiune a TypeScript cu privire la care câmpuri sunt opționale.
De ce unele câmpuri se transformă în schema goală {}?
Asta se întâmplă pentru construcții pe care JSON Schema nu le poate exprima, cum ar fi un parametru de tip generic sau un tip pe care instrumentul nu a putut să-l rezolve. Un avertisment se adaugă sub rezultat explicând exact care câmp și de ce.
Codul meu TypeScript este încărcat undeva?
Nu. Conversia se execută în întregime în browserul dvs. — definițiile dvs. de tip și schema generată nu părăsesc niciodată dispozitivul dvs.