Как отключить строгие проверки в тестовых файлах spe c в Angular? - PullRequest
0 голосов
/ 09 апреля 2020

В моем tsconfig. json У меня есть правило "strictNullChecks": true, но я не хочу, чтобы это было в моих тестах, которые все * .spe c .ts файлы. Поэтому я пытался переопределить этот флаг в моем tsconfig.spe c. json, но он не работает. Что я делаю не так?

tsconfig. json

{
    "compileOnSave": false,
    "compilerOptions": {
        "noImplicitAny": true,
        "noImplicitReturns": true,
        "noImplicitThis": true,
        "noFallthroughCasesInSwitch": true,
        "strictNullChecks": true,
        "downlevelIteration": true,
        "importHelpers": true,
        "module": "esnext",
        "outDir": "./dist/out-tsc",
        "sourceMap": true,
        "declaration": false,
        "moduleResolution": "node",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "alwaysStrict": true,
        "skipLibCheck": true,
        "target": "es5",
        "typeRoots": [
            "node_modules/@types"
        ],
        "lib": [
            "es2017",
            "dom"
        ],
        "baseUrl": "./ClientApp",
    },
    "angularCompilerOptions": {
        "strictTemplates": true,
        "strictOutputEventTypes": false
    }
}

tsconfig.spe c. json

{
    "extends": "../tsconfig.json",
    "compilerOptions": {
        "outDir": "../out-tsc/spec",
        "baseUrl": "./",
        "target": "es5",
        "types": [
            "jasmine",
            "node"
        ],
        "strictNullChecks": false
    },
    "files": [
        "test.ts",
        "polyfills.ts"
    ],
    "include": [
        "**/*.spec.ts",
        "**/*.d.ts"
    ]
}

1 Ответ

0 голосов
/ 15 апреля 2020

Оба VS Code и WebStorm ищут ближайший к открытому файлу tsconfig.json конфигурацию, которая будет использоваться для поддержки IDE TS. Они не знают о специфических Angular файлах *1017*, таких как tsconfig.app.json и tsconfig.spec.json. Поэтому плохая новость заключается в том, что поддержка разных наборов предпочтений кажется невозможной только в зависимости от расширения файла. Разделение может быть выполнено только на уровне папок, что означает, что вам нужно поместить все тесты в одну папку, а код приложения - в другую.

Хорошая новость заключается в том, что при использовании angular -cli все должно правильно компилироваться .

В качестве обходного пути можно использовать утверждения

const y: string = null as any;

Или более безопасный способ, который позволяет отслеживать ошибки после изменения сигнатур: ошибка:

function f(dep: string) () { }
const x = f(null as any); // Ok

// And it won't notify you after changing the type of function argument
// what can be desirable in some cases
function f(dep: number) () { } 
const x = f(null as any as number); // Ok and will show error for incorrect type

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...