Types」から最後にご紹介するのは、おもにnullとundefinedに関わる項目です(かっこ内は原文の項目タイトル)。その他として若干の説明を補っています。nullとundefinedJavaScriptのプリミティブには、用いることのできる値がないことを示すnullと、初期化されていない値を意味するundefinedがあります。TypeScriptが備えるこれらに対する型は、同じ名前のnullとundefinedです。ふたつの型がどう扱われるかは、tsconfig.jsonのstrictNullChecksの設定によって変わります。ノート01■TSConfigのstrictフラグtsconfig.jsonのstrictをtrueにすると、すべての厳格な(strict)モードが有効になります。strictNullChecksをtrueにした効果が得られるということです。strictNullChecksがfalseのときstrictNullChecksはfalseがデフォルトです。この場合、nullとundefinedは、すべての型に値として代入できます。OKけれど、予め定めたのとは異なる値が入ると、バグの原因になりかねません。オブジェクトの参照が取得できずにnullとなった場合、プロパティやメソッドを参照すればランタイムエラーになってしまいます。必要性がないなら、strictNullChecksはtrueにするのがよいでしょう。strictNullChecksがtrueのときstrictNullChecksをtrueに定めると、nullやundefinedが型づけに含まれないかぎり、これらの値は受け入れられません。割り当てることはできません。割り当てることはできません。undefined;nullやundefinedが受け取れるようにするには、ユニオン型ではっきりとnullまたはundefinedを加えてください。その場合、nullとundefinedとは型が区別されます。割り当てることはできません。undefined;取り出したオブジェクトの参照がnullかもしれない場合には、そのままプロパティやメソッドにアクセスすることは許されません。コンパイルエラーが示されます。ある可能性があります。01";エラーを避けるには、プロパティやメソッドにアクセスする前に、オブジェクトが取り出せたことを確かめてください。これで、ランタイムでもエラーが起こりることはありません。非nullアサーション演算子!nullやundefinedでないかの判定を、型アサーションの構文で省くこともできます。用いるのは、非nullアサーション演算子!です。式の後に!演算子を添えると、値がnullでもundefinedでもないことを型アサーションします。コンパイルエラーなしけれど、型アサーションはデータを変換する訳ではありません。TypeScriptに、値がnullやundefinedとなり得るかの分析を止めさせるだけです。オブジェクトの参照が得られなかったのにプロパティやメソッドにアクセスすれば、ランタイムエラーになってしまいます。今のところは存在だけ覚えておけばよい型を、いくつかご紹介します。列挙型(enum)列挙型(enum)は、TypeScriptがJavaScriptに加えた機能で、列挙した名前の低数値をまとめたデータです。TypeScriptの他の機能と異なり、JavaScriptに型を定めただけでなく、言語とランタイムの拡張になります。列挙型について理解するまでは、こういう型があることだけ覚えておけば構いません。列挙型について詳しくは、リファレンスの「Enums」をご参照ください。一般的でないプリミティブTypeScriptの型システムにおいて、あまり一般的でないJavaScriptのプリミティブをふたつ簡単にご説明します。数値(number)型プリミティブで表現できる最大の数であるNumber.MAX_SAFE_INTEGERよりも大きな数値を扱えるプリミティブです。2020で採り入れられました(「JavaScriptの次の仕様ES2020で追加されることが決定した新機能まとめ」参照)。通常の数値型のままでは、Number.MAX_SAFE_INTEGERを超えた数値の演算に誤差が生じてしまいます。誤差が生じるbigint型の数値をつくるのが、BigInt()関数です。数値のあとにnを添えて、リテラルで書くこともできます。2nbigint型について詳しくは、リファレンスの「BigInt」をお読みください。2015で備わったSymbolのプリミティブは、グローバルに一意の値です。Symbol()関数でつくり、引数には説明のための文字列が渡せます。引数の文字列から値がつくられるわけではありません。戻り値は、つねに一意のsymbol型プリミティブです。falsesymbol型について詳しくは、リファレンスの「Symbols」をご覧ください。