TypeScript 4.8で入る型の絞り込みの改善とは
ARANK

皆さんこんにちは。今回はTypeScriptの更新先取りシリーズです。TypeScriptの次のバージョンでは、以下のPRの更新が入ると思われます。もちろんPRの著者はAndersさんです。このPRではTypeScriptの根幹を成す機能の一つである「型の絞り込み」が改善されます。特に、unknown型と{}型の取り扱いが修正されている点が注目に値します。 型引数に対する推論が抱えていた既存の問題{}型は、「nullとundefined以外の任意の値」という意味を持つ型です。この型は形としては空のオブジェクト型ですが、JavaScriptではnullとundefined以外のプリミティブ(文字列や数値など)に対してもプロパティアクセスをしてもエラーにならないという仕様を考慮して、{}型には文字列や数値などのプリミティブも含まれています。従来型引数に対する推論が抱えていた問題とは、任意の型引数が{}型に代入可能であることです。これにより、nullやundefinedが{}型に入ってしまう場合がありました。function someFunc<T>(x: T) { // エラーにならない! const some: {} = x; } someFunc(null); TypeScript 4.8ではこの挙動が修正され、上記のコードはエラーになります。エラーを修正するには、次…

zenn.dev
Related Topics: TypeScript