作成日: 2017/04/05 最終更新日: 2017/04/05
文書種別
技術情報
詳細
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"]
}
}
----------------------------------------------------------------
エラーメッセージ: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"]
}
}
----------------------------------------------------------------
旧文書番号
82108