WijmoのTypeScriptのモジュールファイルと@types/nodeパッケージを使用するとコンパイルエラーが発生する

文書番号 : 82108     文書種別 : Info
登録日 : 2017/04/05     最終更新日 : 2017/04/05

対象製品

Wijmo 5

詳細

WijmoのTypeScriptのモジュールファイルと@types/nodeパッケージを使用し、コンパイルすると下記エラーメッセージを出力するコンパイルエラーが発生します。

 エラーメッセージ:Type 'Timer' is not assignable to type 'number'.

ご指摘の現象は、@types/nodeパッケージに含まれる、Node.jsのTypeScript型定義ファイルの問題により発生しています。

Wijmoの内部処理では標準のsetTimeoutメソッドを実行しています。
[MDN] window.setTimeout

一方で、Node.jsの型定義ファイルでは、Node.js独自のsetTimeoutメソッドが定義されています。その結果、TypeScriptファイル(この場合wijmo.ts)でsetTimeoutメソッドを実行すると、型の競合エラーが発生します。

 ◎参考情報
 https://github.com/Microsoft/TypeScript/issues/842

この問題を回避するには、tsconfig.jsonで次の設定を追加して、@types/nodeパッケージをコンパイル対象から除外する方法が考えられます。

◎サンプルコード
----------------------------------------------------------------
{
 "compilerOptions": {
   :
  "types": []
  // または、node以外のパッケージを明示的に定義します。
  "types": ["パッケージA", "パッケージB"]
 }
}
----------------------------------------------------------------