Вы не можете решить эту проблему следующим образом:
declare module "*.spec.ts" {
/* ... */
}
, потому что именно так вы описываете содержимое всех *.spec.ts
файлов, а не среду, в которой они выполнялись.
Лучше всего, если вы сможете отделить исходный код от тестов и использовать два отдельных файла tsconfig.json
.Если вам необходимо смешать исходный код и тесты, единственная опция, которая приходит вам в голову, - это создать файл объявления вне ваших включенных файлов и импортировать его вручную в каждый тестовый файл.Например, вы можете создать каталог с именем environment
в корне вашего проекта и поместить туда файл test.d.ts
.
./environment/test.d.ts
declare const foo: string;
Теперь каждый тест, который зависит от глобального foo
, должен ссылаться на environment/test.d.ts
.
./path/to/foo.spec.ts
import '../environment/test';
console.log(foo);
Это громоздко, ноЯ не нашел лучшего способа обслуживания разных глобальных файлов для разных файлов.Обычно люди просто загрязняют свое глобальное пространство имен всеми имеющимися глобальными объектами (узел, браузер, тесты).