私はいくつかの古いTypeScriptコードを最新のコンパイラバージョンを使用するようにアップグレードしていますが、への呼び出しで問題が発生していますsetTimeout
。このコードはsetTimeout
、数値を返すブラウザの関数を呼び出すことを想定しています。
setTimeout(handler: (...args: any[]) => void, timeout: number): number;
ただし、コンパイラーはこれを代わりにノード実装に解決し、NodeJS.Timerを返します。
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;
このコードはノードでは実行されませんが、ノードのタイピングは他のものへの依存関係として取り込まれます(不明)。
setTimeout
必要なバージョンを選択するようにコンパイラーに指示するにはどうすればよいですか?
問題のコードは次のとおりです。
let n: number;
n = setTimeout(function () { /* snip */ }, 500);
これにより、コンパイラエラーが発生します。
TS2322:タイプ 'Timer'はタイプ 'number'に割り当てることができません。