У меня есть два пакета 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
.