Application)のプログラムを書いてたら、以下の問題に遭遇しました。'number'.」というエラーメッセージが表示されます。Code)で関数の戻り値を確認すると、戻り値の型はNodeJS.Timerになってます。私の場合は、Angularで「setTimeout()」を記述しただけです。それが「NodeJS.Timer」となってしまうのか気になったので、調べてみました。overflowを見るとわかるのですが、「setTimeout()」を「window.setTimeout()」に変えると、戻り値は数値型で通用します。500);この仕様はMDNにも記載されており、「window.setTimeout()」のドキュメントを確認すると、確かに戻り値は数値型です。呼び出して作成したタイマーを識別する正の整数値です。引用:https://developer.mozilla.org/ja/docs/Web/API/WindowTimers/setTimeoutsetTimeout()とwindow.setTimeout()の違いではなぜ「window.setTimeout()」にするとTypeScriptの戻り値の解釈が変わるのかと申しますと、これは「setTimeout()」との違いが関係するようです。単なる「setTimeout()」ではブラウザ外(例えばNode.jsのサーバーサイド)のJSや、自分たちで用意した関数も考慮されます。その結果「setTimeout()」のTypeScriptにおける戻り値の型が、NodeJS.Timerになっているようです。「window.」の省略についてJavaScriptでは、グローバルオブジェクトの「window.」の記述を省略できます。「window.location.href」を「location.href」と書けます「window.alert()」は「alert()」と書けますただし私が遭遇した今回の事例は、まさに「window.」を省略したことによって起こりました。調べてみると、確かにNode.jsにはTimerのAPIで「setTimeout()」関数があります。...args])https://nodejs.org/api/timers.html「window.」を省略したことで、TypeScriptがNode.jsの「setTimeout()」を使うと判断したという理屈になります。さいごに色々と調べてみた結果ですが、私の中では以下の結論に落ち着きました。はてなブログProWEB系エンジニア。ブログで趣味の映画・ゲーム・読書の感想を書いたり、技術系の知見を共有しています。技術書典7にサークル参加して、技術同人誌を頒布しました。BOOTHに電子版があります。(1)月別アーカイブスポンサーリンクはてなブログをはじめよう!konosumiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。