created: 2024-07-24T03:25:14.003Z

zod で「入力は必須じゃないけど、入力した場合は 1 以上の数値を入れて欲しい」という入力欄のスキーマ定義

掲題の仕様に追加して「入力されなかった場合は undefined になってほしい」もやろうとするとひとひねり必要。

↓ のやりかたできちんと動いた。

定義

    myvalue: z
      .union([
        z.literal(""),
        z.coerce.number().min(1)
      ])
      .transform((v) => (v === "" ? undefined : v)),

型も number | undefined になってくれる。

単体テストの考え方/使い方
[ad] 単体テストの考え方/使い方
Vladimir Khorikov, 須田智之 (単行本(ソフトカバー))