なんでもノート

なんでも書くノートみたいなブログ

ZodをNext.jsで使ってみた

最近、Zodという名前をTwitterでよく見かける。

github.com

TypeScriptファーストなスキーマベースのバリデーションライブラリらしい。試しにNext.jsのクエリパラメーターのバリデーションで使ってみた。

github.com

架空の検索結果ページのクエリパラメーターをバリデーションする想定で書いてみた。

パス

/search

クエリパラメーター

key名 必須 デフォルト値 取りうる値 対応するスキーマ
q 検索文字列 string 1文字以上の文字列 https://github.com/azujuuuuuun/try-zod-in-next/blob/main/src/model/search/search-query.ts
page ページ番号 number 1 正の整数 https://github.com/azujuuuuuun/try-zod-in-next/blob/main/src/model/search/page.ts
sort ソート順 string "recommend" "new", "recommend" https://github.com/azujuuuuuun/try-zod-in-next/blob/main/src/model/search/sort.ts

感想

  • 今回使ったスキーマは少ないが、他にも沢山のスキーマがあり表現力が豊か
  • バリデーションから型が推論されるので、バリデーション結果の型が信頼できる
  • メソッドチェーンのバリデーションでわかりやすい
  • サーバーサイドのパラメーターのバリデーションには十分使える