型ファイルを参照できます。これらのアノテーションを用いて値に型を付けると、例えばmodeの値を入力する時にdevelopmentやproduction、noneがサジェストされるようになります。型をインストールwebpackとwebpack-cliはインストール済なら、もう1つ@types/webpackもインストールします。@types/webpackこれで型定義部分でimport('webpack')のように書くと@types/webpackが提供する型を参照できるようになりました。型を付ける単に設定オブジェクト全体に型を付けたい場合はConfiguratiionを使います。ここで言う設定オブジェクトはoutputやentry、moduleなど全てを持ったオブジェクトの事です。オブジェクトこれは以下のように設定します。*/};これだけでmodeなどにサジェストされるようになったはずです。設定には配列で複数の設定オブジェクトを置いたり、関数で設定オブジェクトを置いたりといくつか別の形態を持ちます。配列の場合はconfigurationの後ろに[]を置くだけです。関数の場合は@typeではなく@returnsを使います。これにより戻り値の型を付けれます。'development'});ちなみにこの関数は、良くenvやargvと名付けられる引数2つを受け取れますが、これらに型を付けたり場合は以下のようにします。string}のようなオブジェクトと型を付けしました。これでプロパティにアクセスする時にproductionやmodeなどがサジェストされます。プロミス戻り値には設定オブジェクトを解決するプロミスでも良いので、その場合はこんな感じに。});共通設定を切り出す共通設定を切り出すということは設定オブジェクトConfigurationから幾つかのプロパティを取り出して、必要なプロパティだけの新たなオブジェクト型を定義する必要があります。当たらなオブジェクト型を定義するには@typedefアノテーションを使います。string}な型のオブジェクトをFooという名前で定義できます。Fooを使うときには、これまでと同じく@typeで使います。'something'};設定オブジェクトが配列な時、modeというのは実行時に渡した環境変数などで決める内容なので切り分けると効率が良さそうです。...}という内容の共通オブジェクトCommonWeConfigurationを定義して、適当な変数にその型を付けてあげます。"development"};Configurationはinterfaceですが、ここから更に各プロパティへアクセスするには['property']にインデックスにアクセスするような形で書きます。