在 Angular 中关闭严格模式?

Posted

技术标签:

【中文标题】在 Angular 中关闭严格模式?【英文标题】:Turning off Strict Mode in Angular? 【发布时间】:2019-12-25 05:48:51 【问题描述】:

我正在运行into this issue,我想关闭严格模式以绕过它。

我已将tsconfig.json 修改为:

"compilerOptions": 
  "strict": false,

也试过了:

 "compilerOptions": 
   "noImplicitUseStrict": true,

但没有爱。想法?

【问题讨论】:

仍然 - 很高兴知道如何关闭严格模式,因为有时它有点过于严格...... 这不是太严格。它可以防止不推荐的事情,并且有更好的编码方法。说真的,最好保持在严格模式下编码的习惯,在严格模式下出现问题时修复代码。 那是已修复的库。 但是在这种情况下它有点过于严格了。访问arguments.callee.name 没什么大不了的,您只需要注意边缘情况即可。 @jfriend00 用“你想做的事很糟糕”来回应不是回应。它也没有任何帮助。您不知道也不可能知道所有用例。传达您对此事的意见的更好方法是发布答案,给出答案,然后解释为什么在您看来这是一个坏主意。跨度> 【参考方案1】:

按照Angular doc,可以禁用严格模式,关闭 tsconfig.json 文件中的这些标志:

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

【讨论】:

嘿,我做了所有这些,但我的编辑器中仍然出现错误。我不知道还能尝试什么。我正在使用 Angular 11.0.9 还有其他想法吗?【参考方案2】:

如果有人遇到这个问题,我在从 Angular 8 升级到 Angular 10 后遇到了类似的问题。 我不得不删除所有角度编译器标志,并使用以下 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
        
      
    
  

【讨论】:

【参考方案3】:

大多数时候,作为 Angular 框架的初学者,您将面临的问题将是默认设置为 true 的 strictPropertyInitialization 选项

对您的开发过程影响最大的两个标志是 strictPropertyInitialization 和 strictNullChecks。 read more...

所以你可以使用 --strict 选项 se 为 false 来创建一个没有启用严格模式的新 Angular 项目。

ng new app --strict=false

这将导致 tsconfig.json 没有strict... 选项。

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于在 Angular 中关闭严格模式?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测在 $modal 中关闭模式窗口?角度-ui

严格模式下的 Angular 和本地存储

新的 Angular 项目不会在严格模式下编译

Angular:在 Chrome 的严格模式之外尚不支持块范围的声明

请求错误:在 --prod 模式下构建时,Angular 中的“推荐人策略:严格原产地时跨原产地”

AngularJS ie 11 中严格模式下不允许对只读属性赋值