Vai al contenuto
100% locale

Tipo TypeScript a JSON Schema

Converti un'interfaccia o un alias di tipo TypeScript in JSON Schema.

Ingresso
Uscita

Tipo TypeScript a JSON Schema

Incolla un'interfaccia o un alias di tipo TypeScript e questo strumento genera il JSON Schema equivalente, pronto per convalidare i payload API, i file di configurazione o qualsiasi altro dato JSON che deve corrispondere alle tue definizioni di tipo. È realizzato per gli sviluppatori che già descrivono le loro forme di dati in TypeScript e desiderano uno schema senza scriverne uno da zero o configurare un passaggio di compilazione.

Scegli tra JSON Schema draft-07 e il dialetto più recente 2020-12, poiché i validatori e gli strumenti differiscono ancora su quale si aspettano. Le unioni di letterali stringa come 'attivo' | 'inattivo' possono essere rappresentate come un enum o come anyOf di valori const, e puoi richiedere che gli oggetti rifiutino proprietà sconosciute, convertire i commenti di documentazione in campi di descrizione, o estrarre le interfacce denominate in un blocco $defs (o definitions) referenziato da $ref invece di incorporarle ovunque vengono utilizzate.

Gli array, i tuple, i tipi Record e Map, e le unioni che includono null vengono gestiti come TypeScript effettivamente li utilizza — un campo nullable diventa un array di tipi o un ramo anyOf anziché essere silenziosamente eliminato. I costrutti che non hanno equivalenti in JSON Schema, come i metodi, i tipi di funzione o i parametri generici non risolti, vengono convertiti il più generosamente possibile ed elencati come avvisi sotto il risultato per evitare errori silenziosi.

Tutto viene eseguito localmente nel tuo browser; le tue definizioni di tipo e lo schema generato non vengono mai caricati da nessuna parte. Copia il risultato, scaricalo come file .txt, o invialo direttamente all'input di un altro strumento per continuare a lavorarci.

FAQ

Quali parti di TypeScript può convertire?
Interfacce, alias di tipo, letterali di oggetto annidati, array, tuple, Record/Map/Set, Date, Partial/Required/Pick/Omit, e unioni incluse unioni di letterali stringa e null. I costrutti che non hanno equivalenti in JSON Schema, come i metodi e i tipi di funzione, vengono saltati ed elencati come avvisi.
Qual è la differenza tra draft-07 e 2020-12?
Entrambi sono dialetti JSON Schema. 2020-12 è quello attuale e utilizza $defs e prefixItems per i tuple, mentre draft-07 utilizza definitions e un array di items. Scegli quello che il tuo validatore si aspetta.
Cosa succede alle proprietà contrassegnate con '?'?
Vengono omessi dall'array required dello schema, in modo che lo schema generato corrisponda all'idea di TypeScript su quali campi sono facoltativi.
Perché alcuni campi finiscono con uno schema vuoto {}?
Ciò accade per i costrutti che JSON Schema non può esprimere, come un parametro di tipo generico o un tipo che lo strumento non ha potuto risolvere. Un avviso viene aggiunto sotto il risultato spiegando esattamente quale campo e perché.
Il mio codice TypeScript viene caricato da qualche parte?
No. La conversione viene eseguita interamente nel tuo browser — le tue definizioni di tipo e lo schema generato non lasciano mai il tuo dispositivo.