Cosa fa
Il generatore da JSON a TypeScript legge un esempio JSON, come la risposta di un’API o un file di configurazione, e scrive le interfacce TypeScript che lo descrivono. Invece di digitare ogni campo a mano, incolli una risposta reale e ottieni tipi pronti per il codice, per i risultati di fetch, lo stato di Redux o i dati di test.
Il generatore esamina ogni valore, non solo il primo. I numeri diventano number, il testo string, gli oggetti annidati hanno le proprie interfacce e gli elementi di un array vengono uniti, così un campo presente solo in alcuni elementi è segnato come opzionale e un campo a volte null è tipizzato come nullable.
Come si usa
- Incolla JSON nel campo di input, carica un file
.jsono fai clic su Esempio. - Imposta il nome del tipo radice e scegli lo stile:
interfaceotype, null come| nullo come campi opzionali, proprietàreadonlye se aggiungereexporta ogni dichiarazione. - Copia il TypeScript o scaricalo come file
.ts.
Il JSON non valido viene segnalato con la riga e la colonna del problema, così puoi correggere subito l’esempio.
Esempio
Questo JSON:
{ "id": 7, "name": "Ada", "tags": ["admin"], "manager": { "id": 1, "email": null } }
diventa queste dichiarazioni:
export interface Root {
id: number;
name: string;
tags: string[];
manager: Manager;
}
export interface Manager {
id: number;
email: null;
}
Suggerimenti
- Un solo esempio mostra solo ciò che contiene. Se un campo può essere una stringa o null, includi un caso per ciascuno oppure metti più esempi in un array perché vengano uniti.
- I nomi di campo che non sono identificatori validi, come first-name, vengono scritti tra virgolette, così l’output compila sempre.
- Il risultato è un punto di partenza. Restringi i campi stringa a unioni di letterali o a
Datequando ne sai più dell’esempio. - Ti serve Go? Il convertitore da JSON a Go usa la stessa deduzione per scrivere struct con tag json.
Domande frequenti
› Come vengono gestiti gli oggetti annidati?
Ogni oggetto annidato diventa un'interfaccia con nome proprio, ricavato dalla chiave in PascalCase, quindi un campo address produce un'interfaccia Address. Gli oggetti con esattamente la stessa struttura condividono un'interfaccia e i nomi in conflitto ricevono un numero, come Address2.
› Come vengono tipizzati gli array?
Tutti gli elementi di un array vengono uniti in un unico tipo di elemento. Un array di oggetti diventa un array di un'interfaccia chiamata con il singolare della chiave, quindi orders dà Order[]. Gli array misti diventano un'unione come (string | number)[] e gli array vuoti diventano unknown[].
› Quando un campo viene segnato come opzionale?
Quando manca in alcuni oggetti di un array. Un campo presente ovunque ma a volte null viene scritto per impostazione predefinita come T | null; imposta i valori null su opzionale per togliere il null e segnare il campo come opzionale con un punto interrogativo.
› Meglio scegliere interface o type?
Entrambi descrivono le stesse forme di oggetto. Le interfacce si possono estendere e unire, e molte guide di stile le preferiscono per i tipi oggetto. Gli alias di tipo sono comodi se pensi di combinare il risultato con unioni o tipi mappati. Scegli quello che usa il tuo progetto.
› Il mio JSON viene inviato a un server?
No. I tipi vengono dedotti nel browser, quindi puoi incollare risposte reali di un'API in tutta sicurezza.