Javascript Mocha使用全局范围中定义的类型测试TypeScript

Javascript Mocha使用全局范围中定义的类型测试TypeScript,javascript,node.js,reactjs,typescript,mocha.js,Javascript,Node.js,Reactjs,Typescript,Mocha.js,我目前正在为一个遗留应用程序构建一个测试框架,该应用程序有许多类型.ts文件,这些文件定义了类型,但在文件的顶层没有任何导入/导出。例如,我们有一个只包含 interface Pills { id: number, // more properties } ,如果没有导入/导出,则该文件被视为一个模块,并且是全局范围的一部分。任何使用类型的文件都会使用该类型,而不会显式导入该类型。这在我们的web应用程序中目前运行良好,它作为webpack包运行 但是,当我尝试使用在NodeJ上运行的mo

我目前正在为一个遗留应用程序构建一个测试框架,该应用程序有许多
类型.ts
文件,这些文件定义了类型,但在文件的顶层没有任何导入/导出。例如,我们有一个只包含

interface Pills {
 id: number,
 // more properties
}
,如果没有导入/导出,则该文件被视为一个模块,并且是全局范围的一部分。任何使用
类型的文件都会使用该类型,而不会显式导入该类型。这在我们的web应用程序中目前运行良好,它作为
webpack
包运行

但是,当我尝试使用在NodeJ上运行的
mocha
运行测试时,我得到以下错误:

app/javascript/components/HardwareTestReports/table.tsx(18,16): error TS2304: Cannot find name 'Pill'.
app/javascript/components/HardwareTestReports/table.tsx(106,56): error TS2304: Cannot find name 'Pill'.
这是因为
mocha
在NodeJS上运行,需要文件显式声明导出/导入吗

我的
.tsconfig
如下所示:

{
  "compilerOptions": {
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": ["es7", "dom", "esnext"],
    "module": "es6",
    "moduleResolution": "node",
    "sourceMap": true,
    "target": "es6",
    "jsx": "react",
    "esModuleInterop": true
  },
  "exclude": ["node_modules", "vendor", "public", "test"],
  "compileOnSave": false
}
My package.json具有以下测试脚本:

  "scripts": {
    "test": "TS_NODE_PROJECT='./tsconfig.json' mocha -r ts-node/register -r esm test/**/*.ts"
  },
这是因为
mocha
在NodeJS上运行,需要文件显式声明导出/导入吗

重构
types.ts
文件以显式导入/导出其类型目前不是一个选项-我们有许多相互交织的类型,更新每个文件以包含导入/导出将涉及到几乎触及代码库中的每个文件-这肯定是一个需要解决的长期项目