こんにちは
野中やすおです。
最近、職場でexactOptionalPropertyTypesを有効にするかどうかについて議論がありました。exactOptionalPropertyTypesを有効にするとどういうメリットがあるのか調べてみました。
exactOptionalPropertyTypesとは何か
exactOptionalPropertyTypesは、TypeScript 4.4で導入されたコンパイラオプションの1つになります。このオプションが有効(on)になっていると、オプショナルなプロパティの型が、より厳密に扱われます。具体的には、オプションプロパティにundefinedの代入することを禁止してエラーを出します。
ちなみにTypeScriptの公式は、exactOptionalPropertyTypesの有効化を推奨しています。
TypeScript is a superset of JavaScript that compiles to clea…
exactOptionalPropertyTypesの有効化方法
exactOptionalPropertyTypesを有効にするには、TypeScriptの設定ファイル(tsconfig.json)にこのオプションを追加します。
1 2 3 4 5 |
{ "compilerOptions": { "exactOptionalPropertyTypes": true } } |
exactOptionalPropertyTypesの具体例
1 2 3 |
interface Example { prop?: string; } |
上記の例だとpropはオプショナルプロパティなので、その値の型は string か undefined になります。
一方、exactOptionalPropertyTypesを有効にすると、オプショナルなプロパティは、明示的にundefinedを割り当てなければならなくなります。
1 2 3 |
interface Example { prop: string | undifined; } |
よって、オプショナルなプロパティを使わないようにするためには、上記のようにオプショナルなプロパティを使わずにstringとundefinedとのunion 型を使います。
最後に
exactOptionalPropertyTypesは開発を進める上で、事前に潜在的なバグを発見できるとても有用なオプションになると思います。ぜひ有効化して開発に役立ててみてください!
参考
オプションプロパティにundefinedの代入することを禁止する…