Zod
Best practice-ek
Validálj a belépési pontokon, UI-ban safeParse, schema újrafelhasználás, külön schemas réteg, lokalizált hibaüzenetek.
Best practice-ek
1) Validálj a trust boundary-n
export async function POST(req: Request) {
const body = await req.json()
const validated = createUserSchema.safeParse(body)
if (!validated.success) return Response.json({ errors: validated.error.issues }, { status: 400 })
return Response.json({ ok: true })
}2) UI-ban safeParse
const result = schema.safeParse(formData)
if (!result.success) {
setErrors(result.error.flatten().fieldErrors)
return
}3) Reuse schema-k (ne duplikálj)
const userSchema = z.object({ id: z.string(), name: z.string(), email: z.string().email() })
const createUserSchema = userSchema.omit({ id: true })
const updateUserSchema = createUserSchema.partial()
const publicUserSchema = userSchema.pick({ id: true, name: true })4) Külön schemas/ réteg
src/
schemas/
user.ts
product.ts
auth.ts5) Típus generálás z.infer-rel
export const userSchema = z.object({ name: z.string() })
export type User = z.infer<typeof userSchema>6) Értelmes hibaüzenetek
const schema = z.object({
email: z.string({ required_error: "Az email megadása kötelező" }).email("Érvényes email formátum szükséges"),
})