私は2つのタイプのパッケージを持っていて、1つのパッケージ(パッケージA)は他のパッケージ(パッケージB)によって異なります。各パッケージには、Karmaを使用してユニットテストが設定されています。 NPMからのすべての依存関係をインストールした後に個別に単体テストを実行すると、単体テストは正常に実行されます。ただし、パッケージAでnpm link package-b
を使用してパッケージAの単位テストを実行すると、タイトルに記載されているエラーが表示されます。 "TS2322:Type 'Timeout'は 'number'の型に割り当てられません。
問題の行はsetTimeout
への呼びかけです。掘り後、テストをnpm link
なしで別々に実行している間、TypeScriptはTypeScript/lib/lib.dom
でsetTimeout
署名を望ましいタイプとして正しく識別しますが、npm link
を使用した後の失敗の場合は@types/node/index
でノードのsetTimeout
署名を使用しています。 setTimeout
の戻り型をstring
に変更し、string
の代わりにTimeout
と同じエラーを観察することでこれを確認しました。
私が一定のものではないのはなぜ TypeScriptコンパイラはこの特定のケースで代替定義を使用することも決まっていませんでした。私はいくつかのコードを投稿できてうれしいですが、失敗した行にあるすべてのものがsetTimeout
呼び出しですが、この場合、私は何が役立つかわからない。
SetTimeoutの代わりにwindow.setTimeout
を使って試すことができました。