こんにちは。
野中やすおです。
今回の記事では、今日のTypeScript開発にはもはや必須となってきた?Zodについて解説しています。私が今いる現場のフロント開発においてもZodが使われています。
Zodとは何か?
Zodは公式サイトで以下のように述べられています。
Zod is a TypeScript-first schema declaration and validation library.
TypeScript-first schema validation with static type inferenc…
Zodは、TypeScript用のバリデーションおよびパーシングライブラリであり、オブジェクトを検証し、安全にパースするための方法を提供しています。
そして特にZodライブラリは、次のような特徴を持っています。
- 型安全の確保:Zodスキーマは、入力オブジェクトをバリデートするだけでなく、その形状に対応するTypeScriptの型を導出します。これにより、TypeScriptの全ての型安全性の利点を確保します。
- 柔軟性:Zodは細かい制御を可能にし、カスタムのバリデーションロジックを簡単に追加できます。
- エラーハンドリング:Zodは失敗したバリデーションに対して詳細なエラーメッセージを提供します。
Zodのインストール方法
Zodはインストール方法として、以下のそれぞれのパッケージに対応しています。
1 2 3 4 |
npm install zod # npm yarn add zod # yarn bun add zod # bun pnpm add zod # pnpm |
TypeScript-first schema validation with static type inferenc…
Zodの使い方
Zodは例えば「user.ts」ファイルのように作成して、以下のように作成します。
1 2 3 4 5 6 7 8 9 10 11 12 |
import { z } from 'zod'; /** * ユーザー */ export const UserSchema = z.object({ name: z.string(), email: z.string().email(), age: z.number().min(0), }); export type User = z.infer<typeof UserSchema>; |
まずは、import { z } from ‘zod’;で、 zをimportします。
慣例的に変数にSchemaを付加するようです。
上記の例では、UserSchemaを通過するオブジェクトは必ず特定の形状にする、つまり、nameはstring、emailは有効なメールアドレスでstring、ageは0以上のnumber)を持つことが保証されています。
またexportすることで以下のようなuserの状態を定義するuseUserStoreというstoreでのインターフェースで型定義をすることができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import { User } from '~/user' interface UserStore { /** ユーザー */ user: User } export const useUserStore = defineStore<'user', UserStore>('user', () => { /** * ユーザーの状態を管理するstoreを定義。 */ ... ... return { user } }) |
以上、Zodなんぞやについて記事を書きました。TypeScriptを使うアプリでは、これからますますvalidatorとしてZodを採用するケースが増えていくと思います。よりよりTSライフのために積極的に活用していきましょう!