Zod
Zod adalah sebuah TypeScript schema validator yang sangat mudah digunakan dan sangat mudah untuk dipahami. Zod juga mendukung untuk validasi asynchronous. Zod juga mendukung untuk validasi data yang berbentuk nested object.
Instalasi
pnpm install zod
Zod Types
Type | Description |
---|---|
z.string() | Validasi untuk string |
z.number() | Validasi untuk number |
z.boolean() | Validasi untuk boolean |
z.undefined() | Validasi untuk undefined |
z.null() | Validasi untuk null |
z.any() | Validasi untuk any |
z.unknown() | Validasi untuk unknown |
z.void() | Validasi untuk void |
z.never() | Validasi untuk never |
z.literal() | Validasi untuk literal |
z.enum() | Validasi untuk enum |
z.nativeEnum() | Validasi untuk native enum |
z.function() | Validasi untuk function |
z.record() | Validasi untuk record |
z.tuple() | Validasi untuk tuple |
z.array() | Validasi untuk array |
z.object() | Validasi untuk object |
z.union() | Validasi untuk union |
z.intersection() | Validasi untuk intersection |
z.promise() | Validasi untuk promise |
z.lazy() | Validasi untuk lazy |
z.date() | Validasi untuk date |
z.bigint() | Validasi untuk bigint |
z.optional() | Validasi untuk optional |
z.nullable() | Validasi untuk nullable |
Contoh Penggunaan
import { z } from "zod";
const schema = z.object({
name: z.string(),
age: z.number(),
});
const data = {
name: "John Doe",
age: 20,
};
schema.parse(data);
Contoh Penggunaan untuk Validasi Asynchronous
import { z } from "zod";
const schema = z.object({
name: z.string(),
age: z.number(),
});
const data = {
name: "John Doe",
age: 20,
};
schema.parseAsync(data);
Contoh Penggunaan untuk Validasi Nested Object
import { z } from "zod";
const schema = z.object({
name: z.string(),
age: z.number(),
address: z.object({
street: z.string(),
city: z.string(),
country: z.string(),
}),
});
const data = {
name: "John Doe",
age: 20,
address: {
street: "Jl. Raya",
city: "Jakarta",
country: "Indonesia",
},
};
schema.parse(data);
Contoh Penggunaan untuk Validasi Array
import { z } from "zod";
const schema = z.object({
name: z.string(),
age: z.number(),
address: z.object({
street: z.string(),
city: z.string(),
country: z.string(),
}),
hobbies: z.array(z.string()),
});
const data = {
name: "John Doe",
age: 20,
address: {
street: "Jl. Raya",
city: "Jakarta",
country: "Indonesia",
},
hobbies: ["Coding", "Reading", "Writing"],
};
schema.parse(data);