Saltar al contenido

Esquema Zod a tipo TypeScript

Convierte una definición de esquema Zod en su interfaz o tipo TypeScript correspondiente.

Entrada
Salida

Esquema Zod a tipo TypeScript

Pega un esquema Zod —una definición `z.object({...})`, opcionalmente asignada a una `const`— y esta herramienta genera la interfaz TypeScript o el alias de tipo que `z.infer` produciría. Es útil cuando el esquema es la fuente de verdad y deseas obtener el tipo estático correspondiente sin ejecutar un paso de compilación o una CLI de generación de código: para verificar rápidamente mientras escribes código de validación, para documentar la forma de una API a partir de su esquema Zod, o para portar un esquema a un proyecto que solo necesita los tipos.

Las opciones de salida controlan la forma del código generado. Elige entre una `interface` y un `type` alias (un esquema que no sea de objeto, como una unión simple o una cadena de texto, siempre se convierte en un alias de tipo, ya que las interfaces de TypeScript solo pueden describir formas de objeto). Los campos opcionales pueden representarse como un signo de interrogación (`field?: string`) o como una unión explícita `string | undefined`. Una opción separada mantiene los miembros de `z.enum` como una unión literal en lugar de convertirlos a `string`, y otra convierte las llamadas `.describe("...")` en un comentario de bloque de documentación encima de cada campo.

Los objetos anidados, matrices, tuplas, uniones, intersecciones, registros, mapas y conjuntos se convierten todos en sus equivalentes de TypeScript, y las llamadas encadenadas comunes que solo agregan validación en tiempo de ejecución —`.min()`, `.email()`, `.refine()`, `.default()` y similares— se reconocen y se omiten en lugar de romper la conversión. Los esquemas recursivos construidos con `z.lazy(() => Schema)` se resuelven en un tipo que se auto-referencia cuando la `const` coincidente forma parte de la misma entrada; desactiva esa opción para ver `any` en su lugar. Los saltos de línea de Windows y Unix se manejan de la misma manera, y el recuento debajo de la salida informa cuántas declaraciones y campos se generaron.

Todo se ejecuta en tu navegador. El esquema que pegas nunca se carga en ningún lugar, así que es seguro usar con el código de validación de una API sin lanzar. Copia el resultado, descárgalo como archivo `.txt`, o envíalo directamente a otra herramienta para seguir trabajando.

Preguntas frecuentes

¿Qué versión de Zod es compatible?
Las funciones de fábrica comunes y los métodos encadenados de Zod v3 y v4 —objetos, matrices, uniones, registros y el resto. Las transformaciones personalizadas y los refinamientos se analizan y se omiten, porque su efecto en el tipo no se puede inferir del texto del esquema solo.
¿Qué sucede con .refine(), .transform() y llamadas similares?
Se reconocen e ignoran: la herramienta conserva el tipo que tenía el esquema antes de la llamada, porque no puede evaluar una función arbitraria para saber cómo una transformación cambia la forma.
¿Puede manejar un esquema dividido en múltiples declaraciones const?
Sí. Cada esquema declarado en la entrada se convierte en su propia interfaz o tipo, en el orden en que aparece, por lo que un sub-esquema compartido referenciado por nombre en otro se resuelve correctamente.
¿Por qué mi esquema muestra un error en lugar de convertirse?
Generalmente una llave de cierre, paréntesis o comilla faltante en algún lugar del código pegado. Verifica que cada z.object({ ... }) y literal de matriz esté correctamente cerrado.
¿Se carga mi esquema en algún lugar?
No. La conversión se ejecuta completamente en tu navegador —tu esquema nunca abandona tu dispositivo.