Guia do Desenvolvedor: Gerador de Esquemas Zod a partir de JSON (Validação em Runtime)
Infira e gere esquemas Zod em TypeScript, definições de tipos e regras de validação aninhadas a partir de dados JSON brutos.
import { z } from "zod";
// --- Inferred Nested Sub-Schemas ---
OrderCustomerSchema = z.object({
id: z.number().int(),
fullName: z.string(),
email: z.string().email(),
phone: z.string(),
tier: z.string(),
loyaltyPoints: z.number().int(),
});
OrderShippingAddressCoordinatesSchema = z.object({
latitude: z.number(),
longitude: z.number(),
});
OrderShippingAddressSchema = z.object({
street: z.string(),
suite: z.string(),
city: z.string(),
state: z.string(),
postalCode: z.string(),
country: z.string(),
coordinates: OrderShippingAddressCoordinatesSchema,
});
OrderItemsItemSchema = z.object({
sku: z.string(),
title: z.string(),
quantity: z.number().int(),
unitPrice: z.number(),
discount: z.number().nullable(),
tags: z.array(z.string()),
inStock: z.boolean(),
});
OrderPaymentSummarySchema = z.object({
currency: z.string(),
subtotal: z.number().int(),
tax: z.number(),
shippingFee: z.number().int(),
grandTotal: z.number(),
transactionRef: z.string(),
status: z.string(),
});
// --- Root Schema Definition ---
OrderSchema = z.object({
orderId: z.string().uuid(),
orderNumber: z.string(),
createdAt: z.string().datetime(),
isFulfilled: z.boolean(),
customer: OrderCustomerSchema,
shippingAddress: OrderShippingAddressSchema,
items: z.array(OrderItemsItemSchema),
paymentSummary: OrderPaymentSummarySchema,
});
// --- Inferred TypeScript Types ---
OrderCustomer = z.infer<typeof OrderCustomerSchema>;
OrderShippingAddressCoordinates = z.infer<typeof OrderShippingAddressCoordinatesSchema>;
OrderShippingAddress = z.infer<typeof OrderShippingAddressSchema>;
OrderItemsItem = z.infer<typeof OrderItemsItemSchema>;
OrderPaymentSummary = z.infer<typeof OrderPaymentSummarySchema>;
Order = z.infer<typeof OrderSchema>;Inferência AST 100% no Navegador
A análise de JSON e a síntese de esquemas Zod são executadas localmente na memória do navegador com zero envio de dados.
Tipagem Completa em TypeScript e Zod v3
Gera z.object(), z.array() aninhados, uniões inteligentes e tipos estáticos z.infer prontos para o ambiente de produção.
Regras Inteligentes de Formato e Coerção
Reconhece emails, UUIDs, carimbos de data/hora ISO e URLs com regras de validação altamente configuráveis.