Sări la conținut
Complet local

Schema Zod la tip TypeScript

Convertiți o definiție de schemă Zod în interfața TypeScript sau aliasul de tip corespunzător. Ideal pentru verificarea codului de validare.

Intrare
Ieșire

Schema Zod la tip TypeScript

Lipiți o schemă Zod — o definiție `z.object({...})`, opțional atribuită unei `const` — și acest instrument generează interfața TypeScript sau aliasul de tip pe care `z.infer` l-ar produce. Este util atunci când o schemă este sursa de adevăr și doriți tipul static corespunzător fără a rula o etapă de compilare sau CLI de codegen: pentru o verificare rapidă în timp ce scrieți cod de validare, pentru a documenta forma API-ului din schema Zod, sau pentru a importa o schemă într-un proiect care are nevoie doar de tipuri.

Opțiunile de ieșire controlează forma codului generat. Alegeți între o `interface` și un alias `type` (o schemă non-obiect, cum ar fi o uniune simplă sau string, devine întotdeauna un alias de tip, deoarece interfețele TypeScript pot descrie doar forme de obiecte), și dacă declarația este `export`ată. Câmpurile opționale pot apărea ca semn de întrebare (`câmp?: string`) sau ca o uniune explicită `string | undefined`. O opțiune separată păstrează membrii `z.enum` ca o uniune literală în loc să-i pună într-un string, iar alta transformă apelurile `.describe("...")` în comentarii docblock deasupra fiecărui câmp.

Obiectele imbricate, array-urile, tuplurile, uniunile, intersecțiile, recordurile, mapele și seturile se convertesc în echivalentele TypeScript, iar apelurile în lanț comune care doar adaugă validare la runtime — `.min()`, `.email()`, `.refine()`, `.default()` și altele — sunt recunoscute și ignorate în loc să rupă conversia. Scheme recursive construite cu `z.lazy(() => Schema)` sunt rezolvate înapoi la un tip auto-referențiat când const-ul corespunzător face parte din aceeași intrare; dezactivați opțiunea pentru a vedea `any`. Terminațiile de linie Windows și Unix sunt gestionate identic, iar totalul sub ieșire raportează câte declarații și câmpuri au fost generate.

Totul rulează în browserul dvs. Schema pe care o lipiți nu este niciodată trimisă nicăieri, deci este sigur de utilizat cu codul de validare al API-ului nelansat. Copiați rezultatul, descărcați ca fișier `.txt` sau trimiteți direct către alt instrument pentru a continua lucrul.

FAQ

Ce versiune Zod este acceptată?
Funcțiile factory comune și metodele în lanț din Zod v3 și v4 — obiecte, array-uri, uniuni, înregistrări și altele. Transformările și rafinamentele personalizate sunt analizate și ignorate, deoarece efectul lor asupra tipului nu poate fi dedus doar din textul schemei.
Ce se întâmplă cu .refine(), .transform() și apelurile similare?
Sunt recunoscute și ignorate: instrumentul păstrează tipul pe care schema l-a avut înainte de apel, deoarece nu poate evalua o funcție arbitrară pentru a ști cum o transformare schimbă forma.
Poate gestiona o schemă împărțită în mai multe declarații const?
Da. Fiecare schemă declarată în intrare este convertită în propria interfață sau tip, în ordinea în care apare, deci o sub-schemă comună referențiată prin nume într-alta se rezolvă corect.
De ce schema mea arată o eroare în loc să se convertească?
De obicei, lipsește o paranteză, o paranteză rotundă sau o ghilimele de închidere undeva în cod. Verificați că fiecare z.object({ ... }) și literalul array sunt corespunzător închise.
Schema mea este trimisă undeva?
Nu. Conversia se execută complet în browserul dvs. — schema dvs. nu pleacă niciodată de pe dispozitivul dvs.