web-dev-qa-db-ja.com

"TS2322:タイプ 'TIMEOUT'は、単体テストを実行するときに 'number' 'を入力するために割り当てられません。

私は2つのタイプのパッケージを持っていて、1つのパッケージ(パッケージA)は他のパッケージ(パッケージB)によって異なります。各パッケージには、Karmaを使用してユニットテストが設定されています。 NPMからのすべての依存関係をインストールした後に個別に単体テストを実行すると、単体テストは正常に実行されます。ただし、パッケージAでnpm link package-bを使用してパッケージAの単位テストを実行すると、タイトルに記載されているエラーが表示されます。 "TS2322:Type 'Timeout'は 'number'の型に割り当てられません。

問題の行はsetTimeoutへの呼びかけです。掘り後、テストをnpm linkなしで別々に実行している間、TypeScriptはTypeScript/lib/lib.domsetTimeout署名を望ましいタイプとして正しく識別しますが、npm linkを使用した後の失敗の場合は@types/node/indexでノードのsetTimeout署名を使用しています。 setTimeoutの戻り型をstringに変更し、stringの代わりにTimeoutと同じエラーを観察することでこれを確認しました。

私が一定のものではないのはなぜ TypeScriptコンパイラはこの特定のケースで代替定義を使用することも決まっていませんでした。私はいくつかのコードを投稿できてうれしいですが、失敗した行にあるすべてのものがsetTimeout呼び出しですが、この場合、私は何が役立つかわからない。

17
dawsonc623

SetTimeoutの代わりにwindow.setTimeoutを使って試すことができました。

6
Pablo Marcano