TypeScript中的模块解析如何用于全局值(即描述)?

时间:2019-05-15 12:48:17

标签: typescript mocha jestjs cypress

在安装@types/jest之后立即检测到了相应的打字稿定义,而单独使用jest。

然后我开始与cypress进行集成测试。由于cypress使用的是mocha,因此我现在在我的jest测试中错误地看到了mocha类型定义的引用。实际上,检测到许多重叠的类型定义。例如,describe似乎是在许多文件中定义的。我什至尝试实现自己为describe指向笑话的类型。不幸的是,每一次 mocha “都赢了”。

当打字稿编译器检测到多个定义时,如何指定优先顺序?

multiple typescript definitions for describe

我的tsconfig.json如下:

{
    "compilerOptions": {
        "target": "es5",
        "lib": [ "dom", "dom.iterable", "esnext" ],
        "types": [ "jest", "mocha" ],
        "allowJs": true,
        "skipLibCheck": true,
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true,
        "strict": true,
        "strictNullChecks": true,
        "forceConsistentCasingInFileNames": true,
        "module": "esnext",
        "moduleResolution": "node",
        "resolveJsonModule": true,
        "isolatedModules": false,
        "noEmit": true,
        "jsx": "preserve"
    },
    "include": [ "src/**/*" ]
}

但是,我也尝试了以下方法:

{
    "compilerOptions": {
        "target": "es5",
        "lib": [ "dom", "dom.iterable", "esnext" ],
        "typeRoots": [ "./node_modules/@types", "./src/types" ],
        "allowJs": true,
        "skipLibCheck": true,
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true,
        "strict": true,
        "strictNullChecks": true,
        "forceConsistentCasingInFileNames": true,
        "module": "esnext",
        "moduleResolution": "node",
        "resolveJsonModule": true,
        "isolatedModules": false,
        "noEmit": true,
        "jsx": "preserve"
    },
    "include": [ "src/**/*" ]
}

在两种情况下都选择了 mocha 。如何切换“描述与合作”的类型。要开玩笑

1 个答案:

答案 0 :(得分:0)

CompilerOptions.types允许您限制希望在范围(文件夹)中可用的类型

您可以尝试以下操作: 使用以下命令创建顶级tsconfig.json CompilerOptions.types = []

在测试文件夹内创建tsconfig.json并选择笑话类型 CompilerOptions.types = ['jest']

类似地,在集成文件夹中,创建tsconfig.json并选择摩卡类型 CompilerOptions.types = ['mocha']