«TS2322: тип« Тайм-аут »нельзя назначить типу« число »» при выполнении модульных тестов - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть два пакета TypeScript, и один пакет (Пакет A) зависит от другого (Пакет B).Каждый пакет имеет юнит-тест, настроенный с использованием Karma.Когда я запускаю модульные тесты для каждого отдельно после установки всех зависимостей от NPM, модульные тесты работают нормально.Однако, если я использую npm link package-b в пакете A и запускаю модульные тесты пакета A, я получаю сообщение об ошибке, указанное в заголовке: «TS2322: тип« Тайм-аут »не может быть назначен типу« число ».»

Строка, о которой идет речь, - это вызов setTimeout.После копания я обнаружил, что при выполнении тестов отдельно без npm link TypeScript правильно определяет сигнатуру setTimeout в typescript/lib/lib.dom как желаемый тип, но в случае сбоя после использования npm link он использует использование * 1009 узла* подпись в @types/node/index.Я подтвердил это, изменив тип возврата на setTimeout на string и наблюдая ту же ошибку с string вместо Timeout.

В чем я не уверен, так это почему компилятор TypeScript решил использовать альтернативное определение в данном конкретном случае, ни как я могу убедить его использовать нужное определение.Я рад опубликовать некоторый код, но я не уверен, что было бы полезно в этом случае, учитывая, что все, что находится на ошибочной строке, - это вызов setTimeout.

1 Ответ

1 голос
/ 06 апреля 2019

Вы можете попробовать использовать window.setTimeout вместо просто setTimeout, таким образом машинный текст будет явно использоваться

...