構文
分割代入
【JavaScript/React】よく使うメソッドや構文 25 選 #初心者 - Qiita
1 2 3 4 5 6 7 8 9 10 | |
Nullish
Nullish とは、JavaScript, TypeScript においてnullもしくはundefinedのことである。
Nullish value - MDN Web Docs 用語集 | MDN
?や!を使う演算子いろいろ
Optional chaining (?)
オプショナルチェーン (?.) - JavaScript | MDN
左の項が Nullish のとき、そこで評価を終え式はundefinedを返す。
1 2 | |
null 合体演算子 (??)
左辺が Nullish のとき、右辺の値を返す。
似たような演算子に||があるが、||は左辺が ""、0、false の場合でも右辺の値を返す点で異なるので注意が必要である。
1 2 3 4 5 6 7 8 9 10 11 | |
null 合体代入 (??=)
左辺が Nullish のとき、代入を行う。
1 2 3 | |
三項演算子 (condition ? a : b)
条件が満たされるとき、a が代入される。そうでない場合、b が代入される。
1 2 3 | |
Note
三項演算子は状況に応じて異なる値の定数を定義するのに便利だが、書き足していくうちに読みにくくなるので嫌われている。
JavaScript だと即時関数に置き換えることができる。三項演算子よりこちらのほうがおすすめ。
1 2 3 4 5 6 7 8 | |
非 null アサーション演算子 (!)
これは TypeScript の演算子である。
左の項が Nullish のとき、アサーションを発生させる。
式が参照される際、絶対に null じゃないと言い切れる場合はこの演算子を使って警告を無視することができる。
1 2 3 4 | |
JavaScript にはこういった演算子が存在しないので、いつもどおり書く。
1 2 | |
TypeScript は JavaScript のスーパーセットだから、例 1、例 2 どちらの書き方もできる。あってもなくても同じなら演算子を書かなくてもいいんじゃないの、と思うかもしれないが、この演算子を書いておくことで左に書いたものが Nullish じゃないよ、と TypeScript コンパイラやプログラマーに伝えることができるのだ。
別の例として、実装上は Nullish ではないが、机上では Nullish になりうる場合を考える。
こういった場合も非 null アサーション演算子を使ってエラーを回避することができる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
