Sări la conținut
TextArray
Complet local

JSON la TypeScript

Generați interfețe TypeScript dintr-un document JSON, cu obiecte imbricate ca sub-interfețe numite.

Intrare
Ieșire

JSON la TypeScript

Lipiți un document JSON - un răspuns API, un fișier de configurare, un rând de bază de date - și obțineți declarații TypeScript gata de utilizare. Tipurile sunt deduse recursiv: primitivele se mapează la șir, număr și boolean, tablourile poartă tipul lor de element, iar tablourile mixte devin uniuni curate, cum ar fi (număr | șir)[]. Fiecare obiect imbricat devine o sub-interfață numită derivată din cheia proprietății sale în PascalCase, astfel încât o proprietate „utilizator” produce o interfață utilizator pe care o puteți importa și face referire oriunde.

Formele identice sunt detectate și reutilizați o singură interfață în loc să genereze duplicate; un sufix numeric apare numai atunci când două obiecte au un nume de cheie, dar diferă ca structură. Matricele goale ies ca necunoscut[] și obiectele goale ca Record<șir, necunoscut> — substituenți sinceri mai degrabă decât ghiciri. Numele de proprietăți care nu sunt identificatori validi sunt citate automat, astfel încât cheile cu majuscule și cheile numerice supraviețuiesc intacte.

Opțiunile acoperă convențiile reale ale proiectului. Denumiți tipul rădăcină, alegeți între declarațiile de interfață și de tip, exportați totul sau nimic, marcați toate proprietățile doar în citire și decideți cum sunt tratate valorile nule - ca tip nul explicit sau ca proprietăți opționale. JSON nevalid produce o eroare calmă cu linia și coloana problemei, în același mod în care formatatorul JSON o raportează.

Totul rulează local în browserul dvs.: răspunsurile API cu jetoane, înregistrări ale utilizatorilor sau încărcături utile interne nu părăsesc niciodată mașina dvs. Lipiți, copiați declarațiile în baza de cod și forma datelor dvs. este tastata.

FAQ

Cum sunt introduse obiectele și matricele imbricate?
Obiectele imbricate devin sub-interfețe denumite derivate din cheia lor de proprietate în PascalCase. Matricele iau tipul lor de element; când elementele diferă, tipul este o uniune cum ar fi (număr | șir)[]. O serie de obiecte de aceeași formă reutiliza o singură interfață pentru toate elementele.
Ce se întâmplă cu două obiecte de aceeași formă?
Ei au o singură interfață - generatorul compară structuri și reutiliza prenumele. Un sufix numeric precum Item2 apare numai atunci când două proprietăți au aceeași cheie, dar forme cu adevărat diferite.
Cum sunt gestionate valorile nule?
În mod implicit, o proprietate nulă este introdusă ca nulă, ceea ce este exact ceea ce spune eșantionul. Activați „Proprietăți opționale pentru valorile nule” pentru a emite prop?: necunoscut – util atunci când null înseamnă „uneori absent” în API-ul dvs.
De ce matricea mea goală este scrisă ca necunoscut[]?
O matrice goală nu conține nicio dovadă a tipului său de element, așa că unknown[] este răspunsul sincer. Adăugați un element reprezentativ la eșantion și generatorul deduce tipul real.
JSON-ul meu este încărcat de undeva?
Nu. Instrumentul rulează în întregime în browserul dvs., iar datele dvs. nu părăsesc niciodată dispozitivul dvs. - în siguranță pentru răspunsurile API care conțin jetoane sau date personale.