目次
今月もサイドプロジェクトから学んだことについて、紹介していきたいと思います。
今回は zod を紹介したいと思います。
zod とは?
ZodはTypeScriptプロジェクトのための模型バリデーションライブラリです。
このライブラリは、ストリクトに基づく相関データの検証や保存を簡単に実現できることが特徴です。
コードが混乱しやすい大規模アプリでは、特に有用なツールと評価されています。
使用を開始する前に、Zodをプロジェクトに追加します。
npm install zod
yarn add zod
Zodは、スキーマを使って検証ルールを構築します。以下は基本的な使用例です。
スキーマの作成
import { z } from 'zod';// 単純な数字タイプのスキーマ
const numberSchema = z.number();
// 検証
const result = numberSchema.safeParse(42);
if (result.success) {
console.log('Valid number:', result.data);
} else {
console.log('Validation failed:', result.error);
}
連続するバリデーション
const positiveNumber = z.number().positive();
const result = positiveNumber.safeParse(-10);
console.log(result.success); // false
Zodの素晴らしい点の1つは、複雑なスキーマを構築できることです。
const userSchema = z.object({
name: z.string(),
age: z.number().int().positive(),
email: z.string().email()
});
const userData = {
name: 'Taro',
age: 30,
email: 'taro@example.com'
};
const validationResult = userSchema.safeParse(userData);
console.log(validationResult.success); // true
配列スキーマ
const numbersArray = z.array(z.number());
const arrayData = [1, 2, 3];
const result = numbersArray.safeParse(arrayData);
console.log(result.success); // true
選択式タイプスキーマ
const statusSchema = z.union([
z.literal('success'),
z.literal('failure')
]);
const status = 'success';
const validationResult = statusSchema.safeParse(status);
console.log(validationResult.success); // true
WebAPIから収集したデータの構造を検証したい場合に最適です。
const apiResponseSchema = z.object({
id: z.string().uuid(),
data: z.array(z.object({
key: z.string(),
value: z.number()
}))
});
fetch('/api/data')
.then(response => response.json())
.then(json => {
const result = apiResponseSchema.safeParse(json);
if (!result.success) {
console.error('Invalid API response:', result.error);
} else {
console.log('Valid API response:', result.data);
}
});
値が指定されていない場合のデフォルト値を設定することも可能です。
const schemaWithDefault = z.object({
name: z.string().default('Anonymous'),
age: z.number().optional()
});
const data = { age: 25 };
const parsedData = schemaWithDefault.parse(data);
console.log(parsedData.name); // "Anonymous"
Zodはシンプルな使い方から専門性の高い変数検証まで実現できる模型バリデーションライブラリです。
特にTypeScriptプロジェクトのデータ保証に有用です。
これは今月の記事になります!ぜひサイドプロジェクトで使ってみてくださいね!