← inaro.devAI駆動開発 学習ツール
応用

zodでランタイム検証

なぜ学ぶか: TypeScriptの型は「開発中の約束」で、実行時には消えてしまいます。つまり、APIの返事やフォーム入力など「外から来るデータ」には型の保護が効きません。この穴を埋めるのがzod。前にやったasの、正しい代わりです。

まずはこの例を見てみましょう

import { z } from "zod";
// 「実行時」にデータの形を検査するルールを作るconst UserSchema = z.object({  name: z.string(),  age: z.number(),});
// APIから届いたばかりの、形が保証されていないデータconst raw = JSON.parse('{"name":"Ada","age":36}');
const result = UserSchema.safeParse(raw); // 実際に検査if (result.success) {  result.data; // 検査ずみ。安心して使える}

as(言い張るだけ)と違い、zodは実際に検査してから通します。

型は実行時に消える

動いているアプリは「User型のはず」を一切チェックしません。外部データがその形である保証はどこにもないのです。

zod=実行時の検問所

例のsafeParseが実際に検査します。合格なら型付きデータ、不合格ならエラー情報が返ります。

使う場所は「外との境目」

APIの返事・フォーム入力など、外から来るデータに使います。自分のコード内で作った値には不要です。

asの正しい代わり

外部データにasを使っているAIコードを見たら、「ここzodにできる?」が最高の指摘です。

公式ドキュメント

ステップ 1 / 3

※ カリキュラムの内容はAIが生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。