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 になってくれる。

勉強の戦略――9割の「努力」をやめ、真に必要な一点に集中する
[ad] 勉強の戦略――9割の「努力」をやめ、真に必要な一点に集中する
岡 健作 (単行本)