在 Angular 中如何关闭严格模式?

33

我遇到了这个问题,我想关闭严格模式来解决它。

我已经修改了tsconfig.json文件:

"compilerOptions": {
  "strict": false,

同时还尝试过:

 "compilerOptions": {
   "noImplicitUseStrict": true,

但是没有爱。有何想法?


3
仍然 - 知道如何关闭严格模式会很好,因为有时它太严格了... - Ole
2
它并不是太严格。它只是防止那些不被推荐的事情发生,而且有更好的编码方式。说真的,最好养成编写严格模式代码并在出现问题时修复代码的习惯。 - jfriend00
1
那是已经修复的库。 - Ole
1
但在这种情况下,它有点太严格了。访问arguments.callee.name并不是什么大问题,你只需要注意边缘情况即可。 - Ole
1
@challamzinniagroup - 我坚持我在这里发表的所有评论。我的第一条评论建议您探索的好方法是修复代码,使其能够在严格模式下运行。这不是一个有效的评论吗?没有好的理由编写需要松散模式的代码。是的,可能会有一些情况需要使用某些具有松散模式设计的库,但修复该问题可能需要付出太多的工作,但这仍然不意味着您不首先问自己是否可以摆脱松散模式的要求。在我看来,这应该始终是第一种方法。如果可以的话,请避免使用松散模式。 - jfriend00
显示剩余10条评论
4个回答

39

根据Angular文档,可以通过在tsconfig.json文件中关闭以下标志来禁用严格模式:

   "forceConsistentCasingInFileNames": false,
   "strict": false,
   "noImplicitReturns": false,
   "noFallthroughCasesInSwitch": false,
   ...
   "angularCompilerOptions": {
      "strictInjectionParameters": false,
      "strictInputAccessModifiers": false,
      "strictTemplates": false
   }

嘿,我已经尝试了所有的方法,但在我的编辑器中仍然出现错误。我不知道还有什么其他的尝试方法。我正在使用 Angular 11.0.9,你有其他的想法吗? - d0rf47

13
如果有任何人遇到此问题,我在从Angular 8升级到Angular 10后也遇到了类似的问题。我不得不删除所有的Angular编译器标志,并使用以下TS标志:
在tsconfig.json上:
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "experimentalDecorators": true,
    "module": "es2020",
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2015",
    "noImplicitUseStrict": true,
    "resolveJsonModule": true,
    "skipLibCheck": true,
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  }

关于 angular.json

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "my-project-name": {
      "projectType": "application",
      "schematics": {
        "@schematics/angular:application": {
          "strict": false
        }
      }
    }
  }
}

8
作为 Angular 框架的初学者,你将会遇到一个默认设置为 true 的 strictPropertyInitialization 选项的问题。
其中两个对开发流程影响最大的标志是 strictPropertyInitialization 和 strictNullChecks。 阅读更多... 因此,你可以使用 --strict 选项将其设置为 false,以创建一个没有启用严格模式的新 Angular 项目。 ng new app --strict=false 这将导致 tsconfig.json 中没有 strict... 选项。

5

从tsconfig.json中删除"strict": true


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接