zod.coerce()
Zod v3.20で入った
https://twitter.com/colinhacks/status/1602238725421150208
https://github.com/colinhacks/zod/releases/tag/v3.20#:~:text=a%20ZodPipeline%20instance.-,z.coerce,-Zod%20now%20provides
stringに対して使っている例
code:ts
const schema = z.coerce.string();
schema.parse("tuna"); // => "tuna"
schema.parse(12); // => "12"
schema.parse(true); // => "true"
これは、zod.preprocess()を使って以下のように書いているのと同じ
code:ts
z.preprocess(String, z.string())
coerce()のほうがchainしやすくて良さそうねmrsekut.icon
と、思ったがpreprocessの方でもzod.pipeを併用したら同じことが出来る
どのprimitive型に対しても使える
code:ts
z.coerce.string(); // String(input)
z.coerce.number(); // Number(input)
z.coerce.boolean(); // Boolean(input)
z.coerce.bigint(); // BigInt(input)
z.coerce.date(); // new Date(input)
numberに対して使って、number以外が来た時はちゃんとerrorになる
code:ts
z.coerce.number().parse('hoge') // errror