JSON in TypeScript
Trasforma un oggetto JSON in interfacce TypeScript tipizzate.
- Istantaneo
- Gratis
- Privato (elaborato localmente)
- Senza registrazione
Tipizzare una risposta API in pochi secondi
Invece di scrivere a mano le interfacce di un grande JSON, incollalo qui. Lo strumento deduce i tipi ricorsivamente: oggetti annidati trasformati in interfacce separate, array tipizzati, campi opzionali marcati con «?».
-
Incolla il JSON
Una risposta API, un file di config, qualsiasi oggetto.
-
Nomina la radice
«Root» di default, o il nome che preferisci.
-
Copia le interfacce
Pronte da incollare nel tuo file .ts.
Esempio di inferenza
| Valore JSON | Tipo dedotto |
|---|---|
| "name": "Ada" | name: string |
| "age": 36 | age: number |
| "roles": ["admin"] | roles: string[] |
| "profile": { … } | profile: Profile |
| (chiave assente da un oggetto di un array) | campo?: tipo |
Inferenza da un esempio: ricordati di rifinire i null (spesso in una union string | null) e di controllare i tipi dopo. Tutto avviene localmente, il tuo JSON non lascia mai il browser.
Domande frequenti
Come vengono dedotti i tipi?
Lo strumento esamina ogni valore: un numero diventa number, una stringa string, un booleano boolean. Gli oggetti diventano interfacce con il nome della loro chiave, e gli array sono tipizzati secondo i loro elementi (string[], MioTipo[]…).
Come vengono rilevati i campi opzionali?
Quando un array contiene più oggetti, lo strumento fonde le loro chiavi. Una chiave presente in alcuni oggetti ma non in tutti è marcata opzionale con «?». È esattamente il comportamento atteso per dati API eterogenei.
Cosa succede con i valori null o gli array vuoti?
Un valore null è tipizzato null (da rifinire manualmente, spesso in una union come string | null). Un array vuoto diventa unknown[], perché il tipo dell’elemento non è determinabile da un solo esempio.
Il risultato è pronto da incollare nel mio codice?
Sì: l’interfaccia radice è nominata a tua scelta («Root» di default), le sotto-interfacce sono dichiarate sopra, e la sintassi è TypeScript valido. Rinomina le interfacce secondo il tuo dominio per maggiore chiarezza.