Ir para o conteúdo

Esquema Zod para tipo TypeScript

Converter uma definição de esquema Zod na sua interface ou tipo TypeScript correspondente. Útil para verificar códigos de validação sem compilação.

Entrada
Saída

Esquema Zod para tipo TypeScript

Cole um esquema Zod — uma definição `z.object({...})`, opcionalmente atribuída a uma `const` — e esta ferramenta gera a interface TypeScript ou alias de tipo que `z.infer` produziria. É útil quando um esquema é a fonte de verdade e você quer o tipo estático correspondente sem executar uma etapa de compilação ou um CLI de geração de código: para uma verificação rápida ao escrever código de validação, para documentar a forma da API a partir do seu esquema Zod, ou para portar um esquema para um projeto que só precisa dos tipos.

As opções de saída controlam a forma do código gerado. Escolha entre uma `interface` e um `type` alias (um esquema não-objeto, como uma união nua ou string, sempre se torna um alias de tipo, pois interfaces TypeScript apenas descrevem formas de objeto), e se a declaração é `export`ada. Campos opcionais podem aparecer como ponto de interrogação (`campo?: string`) ou como uma união explícita `string | undefined`. Um interruptor separado mantém os membros de `z.enum` como uma união literal em vez de colapsá-los para `string`, e outro transforma chamadas `.describe("...")` em comentários docblock acima de cada campo.

Objetos aninhados, arrays, tuplas, uniões, interseções, registros, mapas e conjuntos convertem para seus equivalentes TypeScript, e chamadas encadeadas comuns que apenas adicionam validação em tempo de execução — `.min()`, `.email()`, `.refine()`, `.default()` e similares — são reconhecidas e ignoradas em vez de quebrar a conversão. Esquemas recursivos construídos com `z.lazy(() => Schema)` são resolvidos de volta a um tipo auto-referenciado quando a `const` correspondente faz parte da mesma entrada; desative essa opção para ver `any`. Finais de linha do Windows e Unix são tratados da mesma forma, e a contagem sob a saída informa quantas declarações e campos foram gerados.

Tudo é executado no seu navegador. O esquema que você cola nunca é enviado para lugar nenhum, portanto é seguro usar com código de validação de APIs não divulgadas. Copie o resultado, baixe como arquivo `.txt` ou envie diretamente para outra ferramenta.

FAQ

Qual versão do Zod é suportada?
As funções factory comuns e métodos encadeados do Zod v3 e v4 — objetos, arrays, uniões, registros e o resto. Transformações e refinamentos customizados são analisados e ignorados, pois seu efeito no tipo não pode ser inferido apenas do texto do esquema.
O que acontece com .refine(), .transform() e chamadas similares?
Elas são reconhecidas e ignoradas: a ferramenta mantém o tipo que o esquema tinha antes da chamada, pois não consegue avaliar uma função arbitrária para saber como uma transformação muda a forma.
Pode lidar com um esquema dividido em múltiplas declarações const?
Sim. Cada esquema declarado na entrada é convertido para sua própria interface ou tipo, na ordem em que aparece, então um sub-esquema compartilhado referenciado por nome em outro resolve corretamente.
Por que meu esquema mostra um erro em vez de converter?
Geralmente há uma chave de fechamento, parêntese ou aspas faltando em algum lugar do código colado. Verifique se cada z.object({ ... }) e literal de array está devidamente fechado.
Meu esquema é enviado para algum lugar?
Não. A conversão é executada inteiramente no seu navegador — seu esquema nunca sai do seu dispositivo.