Parsing e Validazione
Metodi di Parsing
Una volta definito lo schema, devi passargli i dati.
.parse(data)
Il metodo standard. Se i dati sono validi, restituisce una copia deep-cloned dei dati (tipizzata). Se non lo sono, lancia un ZodError.
```typescript const stringSchema = z.string(); try { stringSchema.parse(123); } catch (err) { if (err instanceof z.ZodError) { console.log(err.issues); } } ```
.safeParse(data)
Non lancia eccezioni. Restituisce un oggetto discriminato dal campo success.
È il metodo preferito per la validazione di form o input API.
```typescript const result = stringSchema.safeParse(123);
if (!result.success) { // result.error contiene l’errore console.log(result.error.format()); } else { // result.data contiene i dati validati console.log(result.data); } ```
.parseAsync(data) e .safeParseAsync(data)
Se usi validazioni asincrone (es. refine che controlla un database), devi usare le versioni async.
```typescript const userId = z.string().refine(async (id) => { return await db.userExists(id); }, “User not found”);
await userId.parseAsync(“123”); ```