Как работает разрешение модуля в 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']