Convertor JSON în TypeScript
Lipește un răspuns API și primești interfețe TypeScript sau aliasuri de tip gata de folosit, cu tipuri imbricate, câmpuri opționale și uniuni cu null deduse pentru tine.
Rulează în browserFără înregistrareNimic nu este încărcat
Cum se folosește: JSON în TypeScript
- Lipește un exemplu JSON, cum ar fi un răspuns API, în caseta din stânga sau deschide un fișier
.json. - Setează numele tipului rădăcină (de exemplu
UsersauApiResponse). - Alege declarații
interfacesautypeși activeazăexport,readonlysau câmpuri toate opționale. - Alege
unknown(mai sigur) sauanypentru valorile pe care exemplul nu le poate dezvălui, cum ar fi array-urile goale și null. - Copiază codul generat sau descarcă-l ca fișier
.ts.
Cum sunt deduse tipurile
- Primitive: șirurile, numerele și valorile booleene se mapează la
string,numberșiboolean. - Obiectele imbricate devin interfețe proprii denumite în PascalCase, așa că
billing_addressdevineBillingAddress. - Array-urile de obiecte sunt combinate într-un singur tip de element, denumit la singular:
usersdăUser[]. O cheie care lipsește din unele elemente devine opțională (key?:). - Valorile null se combină cu celelalte valori văzute pentru acea cheie:
string | null. O cheie care este mereunulldevineunknownsauany. - Array-urile mixte devin array-uri de uniuni precum
(number | string)[]. - Formele identice sunt declarate o singură dată și refolosite, iar formele diferite care ar avea același nume primesc un sufix numeric.
- Cheile care nu sunt identificatori valizi, precum
"first-name"sau"2fa", sunt puse între ghilimele.
interface vs. type
Pentru forme simple de obiecte, cele două sunt aproape interschimbabile. Declarațiile interface pot fi extinse și combinate și dau erori de compilator puțin mai clare. Aliasurile type pot exprima și uniuni și tipuri mapate. Multe echipe folosesc interfețe pentru modelele API și tipuri pentru restul; alege ce așteaptă codul sau linter-ul tău (@typescript-eslint/consistent-type-definitions).
Tipuri mai bune din exemplul tău
Tipurile pot fi doar atât de complete cât este exemplul. Lipește un răspuns care include câmpuri opționale sau un array cu mai multe elemente variate, ca generatorul să poată detecta cheile opționale și nullable. Valori precum datele și enum-urile ajung în JSON ca șiruri simple; restrânge-le manual ulterior, de exemplu status: 'active' | 'disabled'. Pentru validare la runtime, combină tipurile generate cu o bibliotecă de scheme precum Zod.
Întrebări frecvente
Este JSON-ul meu încărcat?
Cum sunt detectate proprietățile opționale?
?. Cu un singur obiect, fiecare cheie este obligatorie, dacă nu bifezi Toate opționale.Ar trebui să folosesc <code>unknown</code> sau <code>any</code>?
unknown este mai sigur: TypeScript te obligă să restrângi valoarea înainte de a o folosi. any dezactivează verificarea tipurilor pentru acea valoare. Folosește-l doar dacă plănuiești să rafinezi tipurile mai târziu.De ce o dată ISO are tipul <code>string</code>?
new Date() după parsare, schimbă tipul proprietății în Date în modelul tău.