35 lines
668 B
Markdown
35 lines
668 B
Markdown
---
|
|
layout: default
|
|
---
|
|
|
|
# Ejemplo de Zod
|
|
|
|
<div class="text-sm mt-8">
|
|
|
|
```typescript
|
|
import { z } from "zod";
|
|
|
|
// Definir el esquema de datos
|
|
const UserSchema = z.object({
|
|
name: z.string(),
|
|
age: z.number().min(0).max(120),
|
|
email: z.string().email(),
|
|
roles: z.array(z.enum(["admin", "user", "guest"])),
|
|
});
|
|
|
|
// Inferir el tipo TypeScript automáticamente
|
|
type User = z.infer<typeof UserSchema>;
|
|
|
|
// Validar datos
|
|
const result = UserSchema.parse({
|
|
name: "Juan",
|
|
age: 30,
|
|
email: "juan@example.com",
|
|
roles: ["admin", "user"]
|
|
});
|
|
// ✅ Si los datos son válidos, devuelve el objeto tipado
|
|
// ❌ Si no, lanza un error con detalles del problema
|
|
```
|
|
|
|
</div>
|