フロントエンド開発といえば。
react アプリの初期化( npm init vite@latest <アプリ名> )

zod の string または null または undefined 、 「number または NaN」定義

● string または undefined → optional()

const schema = z.object({
  name: z.string().optional(), // nameフィールドはstringかundefined
});

● string または null → nullable()

const schema = z.object({
  name: z.string().nullable(),  // nameフィールドはstringかnull
});

● string または null または undefined → nullish()

const schema = z.object({
  name: z.string().nullish(),  // nameフィールドはstringかnullかundefined
});

その他スキーマについては 忘れそうなzodスキーマメモ - Qiita

TypeScriptのゾッとする話 ~ Zodの紹介 ~

import * as z from "zod";

z.number();               // 単純な数値( NaNとBigInt型は含まない )
z.number().min(5);        // 5以上の数値( >= 5 )
z.number().max(5);        // 5以下の数値( <= 5 )
z.number().int();         // 整数型の数値
z.number().positive();    // 0よりも大きい数値( > 0 )
z.number().nonnegative(); // 0以上の数値( >= 0 )
z.number().negative();    // 0より小さい数値( < 0 )
z.number().nonpositive(); // 0以下の数値( <= 0 )
No.2372
07/27 14:28

edit