zodによる実行時バリデーション(入門)
zodのスキーマでJSONレスポンスを実行時に検証し、コンパイル時の型だけでは得られない安全性を確保します
「zodによる実行時バリデーション(入門)」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン2/2です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全2レッスンが含まれています。
導入
目標:zod で実行時の安全性を追加します。コンパイル時の型だけでは不十分なため、スキーマで実際のデータを検証します。
zod のインストール
TS/JS で広く使われている実行時スキーマ検証ライブラリ、zod をインストールします。
npm install zodスキーマの定義
z.object() でスキーマを作成します。z.infer<typeof Schema> を使用すると、スキーマから TS の型を生成できます。
import { z } from "zod";
const UserSchema = z.object({
id: z.number(),
name: z.string()
});
type User = z.infer<typeof UserSchema>;Schema.parse()
Schema.parse() を呼び出してデータを検証します。JSON がスキーマに一致しない場合はエラーがスローされます。
async function getUser() {
const res = await fetch("/user.json");
const raw = await res.json();
const parsed = UserSchema.parse(raw);
console.log(parsed.id, parsed.name);
}safeParse
safeParse は success フィールドと error フィールドを持つオブジェクトを返します。例外をスローするよりも安全です。
const result = UserSchema.safeParse(raw);
if (!result.success) {
console.error(result.error);
} else {
console.log(result.data);
}ネストしたスキーマ
スキーマは、配列、オブジェクト、オプショナルフィールドなどの形でネストできます。
const PostSchema = z.object({
id: z.number(),
title: z.string(),
tags: z.array(z.string())
});
const raw = { id: 1, title: "Hello", tags: ["ts", "zod"] };
const post = PostSchema.parse(raw);バリデーションの確認
簡単な確認:JSON を解析した後に zod で検証するのはなぜですか?
振り返り
振り返り:zod のスキーマは実行時の JSON を検証します。安全性を確保するには parse または safeParse を使用します。
よくある質問
「zodによる実行時バリデーション(入門)」レッスンは無料ですか?
はい。「zodによる実行時バリデーション(入門)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全2レッスンが含まれています。
「zodによる実行時バリデーション(入門)」で何を学びますか?
zodのスキーマでJSONレスポンスを実行時に検証し、コンパイル時の型だけでは得られない安全性を確保します ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
TypeScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/2です。
「zodによる実行時バリデーション(入門)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTypeScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Fetch APIの型、Response.json()のジェネリクス
- zodによる実行時バリデーション(入門)