Open3
Zod
Verify Unknown APIs with an Object Schema
- 外部APIを利用するときはレスポンスの型が無い状態になる
- response dataに対して、
schema.parse(data)
のようにすることで、型情報を追加することができる
Create an Array ofCustom Types
- z.arrayでArrayを表現することができる
- ↓のように使いまわせる
const StarWarsPeopleResults = z.unknown();
const StarWarsPeopleResults = z.object({
results: z.array(StarWarsPerson),
});
Extract a Type from a Parser Object
- z.infer<typeof Schema>でzod objectがtypeとして使えるようになる
Make Schemas Optional
- .optional()でできる
Set a Default Value with Zod
- .default()でできる
Be Specific with Allowed Types
- .enum()
- .union() + literal()
Complex Schema validation
- min, max, emial, url, ...など色々ある
Reduce Duplicated Code by Composing Schemas
- .merge()でbase objectを再利用するなど
Transform Data from within a Schema
- https://zod.dev/?id=transform
- .transformでsplitしたり色々いじれる
Problem
React Hook Formで数値を渡したい時のSchemaをどう定義すれば良いのか?
Try
cosnt schema = z.number();
このSchemaを利用すると、<input type="number" ... />
の値を渡しても以下のバリデーションエラーが出る
Expected number, received string
Solution
coerce
を利用する。
+ cosnt schema = z.coerce.number();
参考資料
Zodでパスワードリセット・再設定のバリデーション