0Pricing
TypeScript Academy · レッスン

Zodによる実行時バリデーション

ZodスキーマでAPIレスポンスの型を検証・推論します。

「Zodによる実行時バリデーション」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。

ようこそ

ZodはTypeScriptを第一に考えたスキーマ検証ライブラリです。スキーマから型を推論し、実行時の検証とコンパイル時の型の両方を提供します。

Zodのインストール

プロジェクトにZodをインストールします。
npm install zod

基本的なスキーマ

スキーマを定義し、TypeScriptの型を推論します。
import { z } from 'zod';
const UserSchema = z.object({
  id: z.number(),
  name: z.string(),
  email: z.string().email(),
});
type User = z.infer<typeof UserSchema>;

データのパース

schema.parse()を使って検証します。失敗するとスローします。
const user = UserSchema.parse({ id: 1, name: 'Alice', email: 'a@b.com' });
// user is typed as User

安全なパース

スローする代わりにエラーを値として扱うには、safeParse()を使用します。
const result = UserSchema.safeParse(unknownData);
if (result.success) {
  console.log(result.data); // User
} else {
  console.log(result.error.issues);
}

配列とオブジェクトのスキーマ

z.arrayとz.objectを使って複雑なスキーマを組み合わせます。
const UsersSchema = z.array(UserSchema);
const CreateUserSchema = UserSchema.omit({ id: true });

OptionalとNullable

フィールドをoptionalまたはnullableとして指定します。
const Schema = z.object({
  name: z.string(),
  bio: z.string().optional(),   // string | undefined
  avatar: z.string().nullable(), // string | null
});

EnumとUnion

enumの値とunion型を検証します。
const StatusSchema = z.enum(['active', 'inactive', 'banned']);
const InputSchema = z.string().or(z.number());

Transform

パースした値を変換します。
const PriceSchema = z.string().transform(s => parseFloat(s));

APIルートでのZod

ExpressやNext.jsのAPIルートでリクエストボディを検証します。
app.post('/users', async (req, res) => {
  const result = CreateUserSchema.safeParse(req.body);
  if (!result.success) return res.status(400).json(result.error);
  const user = await db.create(result.data); // typed!
  res.json(user);
});

カスタムバリデーター

スキーマにカスタムのrefinementを追加します。
const PasswordSchema = z.string().min(8).refine(
  s => /[A-Z]/.test(s), { message: 'Need uppercase' }
);

確認問題

失敗時にスローせずデータを検証するために、Zodはどのメソッドを提供していますか?

まとめ

Zodによる実行時検証:重要な概念とパターンを身につけました。

よくある質問

「Zodによる実行時バリデーション」レッスンは無料ですか?

はい。「Zodによる実行時バリデーション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。

「Zodによる実行時バリデーション」で何を学びますか?

ZodスキーマでAPIレスポンスの型を検証・推論します。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

TypeScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「Zodによる実行時バリデーション」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このTypeScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ジェネリックラッパーによるFetchレスポンスの型付け
  2. Zodによる実行時バリデーション
  3. OpenAPI Codegen:自動生成される型
  4. 型安全なtRPCクライアントの概要
← TypeScript Academyに戻る