👷

zod.coerce.numberの挙動について調査してみた

2024/03/07に公開1

zod.coerceで何が行われているのかわからず怖かったので動作確認してみた。

https://zod.dev/?id=you-can-use-pipe-to-fix-common-issues-with-zcoerce

コード

const n = z.coerce.number()
const result = n.safeParse(v) // vにいろいろ入れて動作確認

console.log({
  v,
  success: result.success,
  data: result.success ? result.data : '',
})

結果

v success data
undefined false
null true 0
true true 1
false true 0
NaN false
Infinity true Infinity
-Infinity true -Infinity
0xfa true 250
1 true 1
'' true 0
'true' false
'false' false
'Infinity' true Infinity
'-Infinity' true -Infinity
'0xfa' true 250
'-1' true -1
'0' true 0
'1' true 1
'1.1' true 1.1
'1' false
{} false
[] true 0
[true] false
[false] false
[1] true 1
['1'] true 1
['1', '2'] false

まとめ

怖い

Discussion