Converti qualsiasi JSON in TypeScript interfaces o types. Genera automaticamente tipi annidati, array tipizzati, optional fields e union types per valori null.
Il generator analizza la struttura del JSON e crea un'interface TypeScript per ogni oggetto annidato. I tipi primitivi (string, number, boolean) vengono rilevati automaticamente. I valori null vengono tipizzati come T | null o come campo opzionale (?) se l'opzione è attiva. Gli array vengono tipizzati come T[] analizzando il tipo degli elementi. Oggetti annidati generano interfacce separate con nomi derivati dalla chiave del parent.
In un'applicazione TypeScript non tipizzata, ogni response.data.user.email è un potenziale crash a runtime. Con le interfacce generate, TypeScript verifica a compile time che tu stia accedendo a campi che esistono davvero e con il tipo giusto. Se l'API cambia e rimuove un campo, il compilatore te lo dice immediatamente — prima che arrivi in produzione. È la differenza tra scoprire un bug in sviluppo o alle 3 di notte con un'allerta di produzione.
Integrazione API REST: copia la risposta JSON da un endpoint (Postman, DevTools, curl) e genera immediatamente i tipi TypeScript da usare nei tuoi services e hook. Migrazione JS → TS: hai già codice JavaScript che usa dati JSON? Genera i tipi e aggiungili progressivamente. Mock dei test: avere i tipi corretti rende più semplice scrivere mock tipizzati per Jest/Vitest. Generazione di form: combinato con librerie come React Hook Form o Zod, i tipi generati diventano la base per la validazione dei form.
Il tool può generare sia interface che type. Interface è preferibile per oggetti che potrebbero essere estesi o implementati da classi — supporta la declaration merging e comunica chiaramente "questo è la forma di un oggetto". Type è più flessibile: supporta union, intersection, tuple e tipi condizionali. Per i dati API, interface è la scelta canonica nella community TypeScript.
I tipi generati automaticamente sono un ottimo punto di partenza, non un prodotto finito. Dopo la generazione considera: aggiungere JSDoc comments sopra ogni campo per documentare il significato; restringere string a literal union types dove appropriato (es. 'pending' | 'paid' | 'cancelled' invece di string); usare branded types per ID (type UserId = string & { readonly brand: unique symbol }) per evitare di passare un ID al posto di un altro; sostituire number con Date per i timestamp.
Il tool analizza il primo elemento dell'array per determinare il tipo. Se l'array è di oggetti, genera un'interface separata per il tipo degli elementi e usa ElementType[]. Se è un array misto, usa unknown[] — suggerisce di raffinare manualmente.
Sì, il generator lavora ricorsivamente su qualsiasi profondità. Ogni oggetto annidato diventa un'interface separata con nome derivato dalla chiave del parent (es. la chiave address genera interface Address).
Zod è una libreria di validazione runtime con inferenza TypeScript. Puoi usare i tipi generati come riferimento per scrivere manualmente lo schema Zod (z.object({...})), oppure usare zod-to-ts per generare i tipi direttamente dallo schema Zod. Per API esterne, lo schema Zod con z.infer<typeof schema> dà sia la validazione runtime che i tipi statici.
field?: string significa che il campo può mancare dall'oggetto. field: string | null significa che il campo è sempre presente ma può essere null. Il tool genera | null per valori null nel JSON — scegli l'opzione "optional fields" se preferisci la sintassi ?.