Как работает разрешение модуля в TypeScript для глобальных значений (т.е. Описания)?

При самостоятельном использовании jest соответствующие определения машинописи были обнаружены сразу после установки @types/jest.

Затем я начал внедрять интеграционные тесты с Cypress. Поскольку кипарис использует мокко, я теперь неправильно вижу ссылки на определения типов мокко внутри моих шутливых тестов. Фактически, обнаружен ряд перекрывающихся определений типов. Например, describe похоже, определено в ряде файлов. Я даже пытался реализовать свою собственную типизацию для describe указывающего на шутку. К сожалению, каждый раз мокко "побеждает".

Как я могу указать порядок приоритета, когда компилятор машинописи обнаруживает несколько определений?

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/**/*" ]
}

В обоих случаях мокко выбирается. Как я могу переключить тип для "описать и со". шутить?

Ответ 1

CompilerOptions.types позволяет ограничить набор текста, который вы хотите использовать в области (папке).

Вы можете попробовать следующее: Создайте tsconfig.json верхнего уровня с CompilerOptions.types = []

Внутри тестовой папки создайте tsconfig.json и выберите jest typings CompilerOptions.types = ['jest']

Аналогично, в папке интеграции создайте tsconfig.json и выберите тип ввода mocha CompilerOptions.types = ['mocha']