Angular 10 更严格的设置 --strict

Dou*_*eri 36 angular-cli angular

在 Angular 10 中,您可以使用创建一个新项目 ng new --strict

启用此标志会使用一些新设置初始化您的新项目,以提高可维护性,帮助您提前捕获错误,并允许 CLI 对您的应用程序执行高级优化

是否有将现有项目升级到严格模式的命令行,或者我只需要创建一个新项目然后从另一个项目复制粘贴文件?

Pie*_*Duc 42

基本上有几件事发生了变化:

  1. tsconfig.base.json 获得一些新规则:
"compilerOptions": {
  "strict": true,
  "forceConsistentCasingInFileNames": true,
  "noFallthroughCasesInSwitch": true
},
"angularCompilerOptions": {
  "strictInjectionParameters": true,
  "strictTemplates": true
}   
Run Code Online (Sandbox Code Playgroud)
  1. tslint.json被更新
"no-any": true
Run Code Online (Sandbox Code Playgroud)
  1. 捆绑预算大小在您的angular.json
"configurations": {
  //...
  [envName]: {
    "budgets": [
      {
        "type": "initial",
        "maximumWarning": "500kb",
        "maximumError": "1mb",
      },
      {
        "type": "anyComponentStyle",
        "maximumWarning": "2kb",
        "maximumError": "4kb",
      },
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

和一个原理图添加到您的projects.[projectName].schematics路径中angular.json

schematics: {
  "@schematics/angular:application": {
    "strict": true
  }
}
Run Code Online (Sandbox Code Playgroud)
  1. 该应用程序package.json更新了一个sideEffects属性:
sideEffects: false
Run Code Online (Sandbox Code Playgroud)

为了解释这是什么,我可以给你参考这个答案。

package.json位于您的应用程序文件夹内。使用该ng update选项时,应将其添加到迁移中。如果你没有这个文件,你可以使用这个模板

要转换当前的代码库,尤其是 tsconfig 更新,这no-any会让您头疼。但是获得更好的(更少隐藏的错误)和更容易重构代码库绝对是值得的。

  • @ar099968 当然,你可以更新 `tslint.json` 而不是 `"no-any": true` 你可以做 `"no-any": { "severity": "warning" }` (2认同)