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

При самостоятельном использовании 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 Ответ

0 голосов
/ 24 июля 2019

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

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

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

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

...