仅将TypeScript环境声明添加到特定文件(如*.spec.ts)
我的Jest仅将TypeScript环境声明添加到特定文件(如*.spec.ts),typescript,jestjs,typescript-typings,tsconfig,Typescript,Jestjs,Typescript Typings,Tsconfig,我的JestsetupTests文件定义了许多全局标识符(类似于global.sinon=sinon,但在环境声明中键入它们适用于所有文件,而不仅仅是setupTests文件所在的*.spec.ts。之前,我已经通过为tests目录使用一个单独的tsconfig.json文件解决了这个问题,但如果测试d个非测试文件位于同一目录中。是否有任何方法使环境声明仅适用于特定的文件名模式?类似于以下内容: declare module "*.spec.ts" { // declarations h
setupTests
文件定义了许多全局标识符(类似于global.sinon=sinon
,但在环境声明中键入它们适用于所有文件,而不仅仅是setupTests
文件所在的*.spec.ts
。之前,我已经通过为tests
目录使用一个单独的tsconfig.json
文件解决了这个问题,但如果测试d个非测试文件位于同一目录中。是否有任何方法使环境声明仅适用于特定的文件名模式?类似于以下内容:
declare module "*.spec.ts" {
// declarations here
}
执行以下操作无法解决此问题:
declare module "*.spec.ts" {
/* ... */
}
因为这是描述所有*.spec.ts
文件内容的方式,而不是它们执行的环境
最好将源代码与测试分开,并使用两个单独的tsconfig.json
文件。如果必须将源代码与测试混合使用,唯一的选择是在包含的文件之外创建一个声明文件,并在每个测试文件中手动导入。例如,您可以创建一个directory在项目的根目录中调用了environment
,并将test.d.ts
文件放在那里
/environment/test.d.ts
declare const foo: string;
import '../environment/test';
console.log(foo);
现在,依赖于全局foo
的每个测试都需要引用环境/test.d.ts
/path/to/foo.spec.ts
declare const foo: string;
import '../environment/test';
console.log(foo);
这很麻烦,但我还没有找到更好的方法为不同的文件提供不同的全局名称空间。通常,人们只是用他们可能拥有的所有全局名称空间(节点、浏览器、测试)来污染他们的全局名称空间.您难道不能仍然有两个tsconfig并在其中使用
包含排除来包含/排除适当的文件吗?