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

詳解 Terraform 第3版 ―Infrastructure as Codeを実現する
[ad] 詳解 Terraform 第3版 ―Infrastructure as Codeを実現する
Yevgeniy Brikman, 松浦 隼人 (単行本(ソフトカバー))