Vai al contenuto
100% locale

Schema Zod a tipo TypeScript

Converti una definizione di schema Zod nella sua interfaccia o tipo TypeScript corrispondente.

Ingresso
Uscita

Schema Zod a tipo TypeScript

Incolla uno schema Zod —una definizione `z.object({...})`, opzionalmente assegnata a una `const`— e questo strumento genera l'interfaccia TypeScript o l'alias di tipo che `z.infer` produrrebbe. È utile quando lo schema è la fonte di verità e vuoi il tipo statico corrispondente senza eseguire un passaggio di compilazione o una CLI di generazione del codice: per un rapido controllo mentre scrivi codice di convalida, per documentare la forma di un'API dal suo schema Zod, o per portare uno schema in una codebase che ha bisogno solo dei tipi.

Le opzioni di output controllano la forma del codice generato. Scegli tra un'`interface` e un alias `type` (uno schema non-oggetto, come un'unione semplice o una stringa, diventa sempre un alias di tipo, poiché le interfacce TypeScript possono descrivere solo forme di oggetti), e se la dichiarazione è `export`ata. I campi facoltativi possono essere renderizzati come un punto interrogativo (`field?: string`) o come un'unione esplicita `string | undefined`. Un interruttore separato mantiene i membri di `z.enum` come un'unione letterale invece di ridurli a `string`, e un altro trasforma le chiamate `.describe("...")` in un blocco di commenti di documentazione sopra ogni campo.

Gli oggetti annidati, array, tuple, unioni, intersezioni, record, mappe e insiemi si convertono tutti nei loro equivalenti TypeScript, e le chiamate concatenate comuni che aggiungono solo convalida in fase di esecuzione — `.min()`, `.email()`, `.refine()`, `.default()` e simili — vengono riconosciute e ignorate piuttosto che interrompere la conversione. Gli schemi ricorsivi costruiti con `z.lazy(() => Schema)` vengono risolti in un tipo auto-referenziale quando la `const` corrispondente fa parte dello stesso input; disattiva questa opzione per vedere `any` al suo posto. I terminali di linea Windows e Unix vengono gestiti allo stesso modo, e il totale sotto l'output segnala quante dichiarazioni e campi sono stati generati.

Tutto viene eseguito nel tuo browser. Lo schema che incolla non viene mai caricato da nessuna parte, quindi è sicuro da usare con il codice di convalida di un'API non ancora rilasciata. Copia il risultato, scaricalo come file `.txt`, o invialo direttamente a un altro strumento per continuare a lavorare.

FAQ

Quale versione di Zod è supportata?
Le funzioni di fabbrica comuni e i metodi concatenati di Zod v3 e v4 — oggetti, array, unioni, record e il resto. Le trasformazioni personalizzate e i raffinamenti vengono analizzati e saltati, poiché il loro effetto sul tipo non può essere dedotto solo dal testo dello schema.
Cosa succede a .refine(), .transform() e chiamate simili?
Vengono riconosciuti e ignorati: lo strumento mantiene il tipo che lo schema aveva prima della chiamata, poiché non può valutare una funzione arbitraria per sapere come una trasformazione cambia la forma.
Può gestire uno schema diviso su più dichiarazioni const?
Sì. Ogni schema dichiarato nell'input viene convertito nella sua propria interfaccia o tipo, nell'ordine in cui appare, quindi un sotto-schema condiviso referenziato per nome in un altro si risolve correttamente.
Perché il mio schema mostra un errore invece di convertire?
Di solito una parentesi di chiusura mancante, una parentesi o un segno di virgolette da qualche parte nel codice incollato. Verifica che ogni z.object({ ... }) e valore letterale dell'array sia correttamente chiuso.
Il mio schema viene caricato da qualche parte?
No. La conversione viene eseguita interamente nel tuo browser — il tuo schema non lascia mai il tuo dispositivo.