Falsyな値の条件式の書き方に迷っている
TypeScriptでの話。特に下記のような値が0
の場合の条件式の書き方に迷っている。
const func = (num: number) => { if (!num) { // numが0の場合、このif文に入る } if (num === 0) { // numが0の場合、このif文にも入る } }
value
がnumber
型でnull
やundefined
をとり得ない場面を想定している。後者の方が前者より直感的にわかりやすい条件式だと思う。が、この条件だけだと-0
やNaN
の考慮漏れで思わぬバグを生む可能性がある(今まで-0
に出会ったことはないが)。
書きながら、ちゃんと0
以外のFalsyな値も考慮しながら実装できた方がいいと思ったので、以下の書き方になりそう。
num
が0
の場合とnum
が他のFalsyな値の場合の処理が同じ場合、前者の!num
だけ書く- 処理が異なる場合、
num === 0
と!num
の両方書く