Convertitore da JSON a TypeScript
Incolla una risposta API e ottieni interface o alias di tipo TypeScript pronti all'uso, con tipi annidati, campi opzionali e unioni con null dedotti automaticamente.
Funziona nel browserNessuna registrazioneNessun caricamento
Come usare JSON to TypeScript
- Incolla un esempio JSON, ad esempio una risposta API, nel riquadro di sinistra oppure apri un file
.json. - Imposta il nome del tipo radice (ad esempio
UseroApiResponse). - Scegli dichiarazioni
interfaceotypee attiva o disattivaexport,readonlyo tutti i campi opzionali. - Scegli
unknown(più sicuro) oanyper i valori che l'esempio non permette di dedurre, come array vuoti e null. - Copia il codice generato o scaricalo come file
.ts.
Come vengono dedotti i tipi
- Tipi primitivi: stringhe, numeri e booleani diventano
string,numbereboolean. - Oggetti annidati diventano interface con un proprio nome in PascalCase, quindi
billing_addressdiventaBillingAddress. - Array di oggetti vengono uniti in un unico tipo di elemento, con il nome al singolare:
usersproduceUser[]. Una chiave assente in alcuni elementi diventa opzionale (key?:). - Valori null si combinano con gli altri valori visti per quella chiave:
string | null. Una chiave che è sempre e solonullricade suunknownoany. - Array misti diventano array di unioni come
(number | string)[]. - Strutture identiche vengono dichiarate una sola volta e riutilizzate, mentre strutture diverse che condividerebbero un nome ricevono un suffisso numerico.
- Chiavi che non sono identificatori validi, come
"first-name"o"2fa", vengono messe tra virgolette.
interface o type
Per semplici forme di oggetti i due sono quasi intercambiabili. Le dichiarazioni interface possono essere estese e unite e producono errori del compilatore un po' più chiari. Gli alias type possono esprimere anche unioni e mapped type. Molti team usano le interface per i modelli delle API e i type per tutto il resto; scegli quello che si aspettano la tua codebase o il tuo linter (@typescript-eslint/consistent-type-definitions).
Tipi migliori dal tuo esempio
I tipi possono essere completi solo quanto l'esempio. Incolla una risposta che includa i campi opzionali, o un array con diversi elementi vari, così il generatore può individuare le chiavi opzionali e nullable. Valori come date ed enum arrivano in JSON come semplici stringhe; restringili a mano in seguito, ad esempio status: 'active' | 'disabled'. Per la validazione a runtime, abbina i tipi generati a una libreria di schema come Zod.
Domande frequenti
Il mio JSON viene caricato?
Come vengono rilevate le proprietà opzionali?
?. Con un solo oggetto tutte le chiavi sono obbligatorie, a meno che tu non spunti Tutto opzionale.Meglio usare <code>unknown</code> o <code>any</code>?
unknown è più sicuro: TypeScript ti obbliga a restringere il valore prima di usarlo. any disattiva il controllo dei tipi per quel valore. Usalo solo se intendi raffinare i tipi in seguito.Perché una data ISO è tipizzata come <code>string</code>?
new Date() dopo il parsing, cambia la proprietà in Date nel tuo modello.