TL;DR
TypeScript のバリデーションライブラリ。実行時に値が期待どおりの型であることを保証しつつ、型推論も効く。
TypeScript-first schema validation with static type inference
仕組み
プリミティブやオブジェクトの期待値を、スキーマオブジェクトとして定義して使う。バリデーションには parse 関数を使い、失敗すると ZodError 例外を投げる。
公式サイトによると、外部への依存がなく、コアのバンドルは gzip で 2 KB と小さい。Node.js と主要なブラウザで動く。API はイミュータブルで、メソッドは新しいインスタンスを返す。
例
文字列を期待するスキーマでは、"1" は通り、1 は ZodError になる。
import { z } from "zod"
const validationSchema = z.string()
const value1 = validationSchema.parse("1")
const value2 = validationSchema.parse(1)オブジェクトのスキーマは次のように書く。
export const validationSchema = z.object({
id: z.string(),
name: z.string(),
age: z.number(),
bio: z.string().optional(),
email: z.string().email(),
})
const payload = validationSchema.parse({
id: "abc",
name: "test",
age: 20,
email: "[email protected]",
})注意点
TypeScript 5.5 以降でテストされており、それより古いバージョンは公式にはサポートされていない。tsconfig.json で strict モードを有効にする必要がある。
関連
- Server Actions: フォームの入力値のバリデーションに使える