【TypeScript】exactOptionalPropertyTypesをonにするとどうなるか?調べてみた

こんにちは

野中やすおです。

最近、職場でexactOptionalPropertyTypesを有効にするかどうかについて議論がありました。exactOptionalPropertyTypesを有効にするとどういうメリットがあるのか調べてみました。

exactOptionalPropertyTypesとは何か

exactOptionalPropertyTypesは、TypeScript 4.4で導入されたコンパイラオプションの1つになります。このオプションが有効(on)になっていると、オプショナルなプロパティの型が、より厳密に扱われます。具体的には、オプションプロパティにundefinedの代入することを禁止してエラーを出します。

ちなみにTypeScriptの公式は、exactOptionalPropertyTypesの有効化を推奨しています。

exactOptionalPropertyTypesの有効化方法

exactOptionalPropertyTypesを有効にするには、TypeScriptの設定ファイル(tsconfig.json)にこのオプションを追加します。

exactOptionalPropertyTypesの具体例

上記の例だとpropはオプショナルプロパティなので、その値の型は stringundefined になります。

一方、exactOptionalPropertyTypesを有効にすると、オプショナルなプロパティは、明示的にundefinedを割り当てなければならなくなります。

よって、オプショナルなプロパティを使わないようにするためには、上記のようにオプショナルなプロパティを使わずにstringとundefinedとのunion 型を使います。

最後に

exactOptionalPropertyTypesは開発を進める上で、事前に潜在的なバグを発見できるとても有用なオプションになると思います。ぜひ有効化して開発に役立ててみてください!

参考

オプションプロパティにundefinedの代入することを禁止する…