Genera un esquema de validación Zod con inferencia de tipos TypeScript desde un objeto de configuración anidado. Pega config JSON y obtén un esquema para...
// Generated by DevBento — json-to-typescript
interface RootApp {
name: string;
version: string;
debug: boolean;
}
interface RootDatabaseCredentials {
user: string;
password: string;
}
interface RootDatabase {
host: string;
port: number;
credentials: RootDatabaseCredentials;
}
interface RootFeatures {
darkMode: boolean;
maxConnections: number;
allowedOrigins: string[];
}
interface Root {
app: RootApp;
database: RootDatabase;
features: RootFeatures;
}Este ejemplo convierte una configuración de aplicación anidada en un esquema de validación Zod con inferencia de tipos TypeScript. El JSON precargado tiene ajustes de app, una sección de base de datos con credenciales y feature flags. El modo Zod está preseleccionado, así que el esquema aparece en cuanto carga la página.
La herramienta produce:
RootSchema con z.object() para la config de nivel superiorRootDatabaseSchema y RootDatabaseCredentialsSchema para la sección anidada de base de datosRootFeaturesSchema para los feature flags, incluido el array de origins permitidosz.string(), z.number(), z.boolean(), z.array(z.string())z.infer<typeof SchemaName>zod incluidanpm install zod)El patrón de config fail-fast: construye el objeto de config desde variables de entorno o un archivo, parséalo con el esquema al inicio de tu entrypoint y falla inmediatamente con un error legible si algo está mal. Cada otro módulo importa el tipo inferido, así que la forma de la config se define una vez y se refuerza tanto en runtime como en compile time.
Las variables de entorno siempre llegan como strings, incluso para números y booleanos. Si tu config viene de process.env, añade z.coerce.number() para puertos y límites, y un paso de preprocesamiento booleano para flags. El esquema generado te da la estructura de la que colgar esos refinamientos.
Cuando la validación falla en producción, registra las rutas de issues de Zod, no los valores. La config a menudo contiene secretos como credenciales de base de datos, y las rutas de issues (database.credentials.user) apuntan al problema sin filtrar el secreto a los logs.
Nothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.