誰が読むのかわからんからクッソ冗長に説明してみる。◆まず例えば「hoge」というおなまえのオブジェクトがあって、それが「prop」というbooleanなプロパティを持っているときの操作について考える。console.log('ちばけんま!');一行目でhogeを作成して、次の行のifにおいてhogeのpropを読みだした。その結果はtrueであるから、consoleに「ちばけんま!」とlogされた。◆型指定type(型)というものを定義することが出来る。「propという真偽値をもつtype」を定義することができる。};一行目で「Piyo」というおなまえのtypeを定義した。true」として初期化している。Piyoに準拠していないものを「=」の右側に書くと、「準拠してないよ」って怒られる。◆null「null」は語弊ありありで言うと「空」「なにもない」という意味を表現する。※以下、nullをundefinedと読み替えていいよ。違う者同士なんだけど。「ふたつの型のどっちかに準拠してるよ」ということ。バーティカルバー「|」で表現される。以下の例で、hogeは「Piyo型またはnull」に準拠する。};hogeをnullに書き換える例は以下の通り。nullは文脈によって型だったり値だったりする。null;◆Nullチェックプログラム外部からの要因により、hogeがPiyoであるかnullであるかの判断が、実行してみるまで分からないという事があり得る。hogeがnullである場合、nullは当然propというプロパティを持たないわけであるから、propの中身を読もうとしたら例外が発生します。例外が発生って言うのは...良くないことが起きたって事。バグと認識してくれてもいい。TypeScriptは賢いので「このhogeってnullになり得るぜ。prop読めないかも知れないぜ。」という注意を実行する前にしてくれるんだ。‘null’.」と注意される。「hogeオブジェクトがnullになるっぽいよ。いうプログラム書いちゃ駄目だよ。」と教えてくれるのだ。(1)」に処理上の意味はない。TypeScriptくんにhogeの内容を予測できなくさせるために書かれている。「1」はTypeScriptにおいてtruthyという性質を持っていて、ifの中ではtrueと同じ扱いをされると思っていい。(1)」と書いて誤魔化しているだけ。null;console.log(hoge.prop);さて、TypeScriptくんに怒られずに済むにはどうすればいいだろうか。hogeがnullじゃ無いよというチェックを入れてあげればいい。null」のifによって、「hogeがnullでない場合」というチェックを通すことができる。nullでないという事は「Piyo」型であるということだ。チェックを通したあとでhoge.propを読んでも絶対に例外が発生することはない。TypeScriptくんに怒られない。chainingだけど、世の中のプログラマーは「いちいちnullの判定を書くのがだるい。オブジェクトがnullだった場合は、プロパティを読まずにそのままnullとして扱ってくれればいい。下記の「hoge?.prop」の「?.」が上記の要望を達成する機能だ。null;console.log(hoge?.prop);上記プログラムを実行するとhogeがnullであるから、propを読まずして「null」とconsoleにlogされる。operator「??」というアレがある。(書くの疲れてきた)下記は「ちばけんま!!!!!」がconsoleにlogされる。'ちばけんま!!!!!');「??」は、その左側の値がnullであった場合、右側の値が使用されるという異能をもってますです。下記は「とらけんま!」がconsoleにlogされる。「’とらけんま!’」はnullではないから。'ちばけんま!!!!!');null処理のはなしは以上。だいたいわかっただろうか。undefinedも「?.」「??」で捌けるよ。operatorの優先順位はい。この記事を書いた理由。この記事を書いた理由ではあるんだけど、スゲェ雑に説明する。operator」の順位を見比べりゃわかるんだが、下記のふたつのconsole.logは異なる出力をする。//falseと出力されるなんとなんと、「??」は「===」よりも優先順位が低いんですね。「hoge?.prop」が「true」であってもfalseになってくれないんですね。TypeScriptは基本的にEcmaに実装を合わせている。んだもんでECMAの仕様を漁ったんだけど演算子の優先順位がどこに書かれてんだか分からなかった。これ誰向けの記事なんだろう。コメントをキャンセルメールアドレスが公開されることはありません。名前メールサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。こちらTwitter:@LivinDyinKittenにDMしろ。メンションつけて罵倒しろ。※本垢だけど嫌がらせに使っているアカウントなので何もつぶやいていません。Norén%d人のブロガーが「いいね」をつけました。