为什么默认情况下禁用 TypeScript 中的 unsecure/non-strict 编译器规则?
Why unsecure/non-strict compilers rules in TypeScript are disabled by default?
最近在我的应用程序中我必须启用所有这些编译器选项:
"alwaysStrict": true,
"extendedDiagnostics": true,
"noFallthroughCasesInSwitch": true,
"noImplicitAny", true,
"noImplicitThis", true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"strict": true,
"strictBindCallApply": true,
"strictFunctionTypes": true,
"strictNullChecks": true,
"strictPropertyInitialization": true
它们用于更严格的编译,即更安全,我相信它们有助于获得更高质量的代码。我的问题是为什么默认情况下所有这些都被禁用。根据:https://www.typescriptlang.org/docs/handbook/compiler-options.html
您只需添加 strict: true
即可节省大量输入。它包括以下 compiler settings:
--noImplicitAny
--noImplicitThis
--alwaysStrict
--strictBindCallApply
--strictNullChecks
--strictFunctionTypes
--strictPropertyInitialization
严格
默认情况下禁用。我想,这简化了从 JS 项目到 TypeScript 的增量迁移,并且不会在开始时造成太多挫败感。
扩展诊断
由于它会输出用于调试目的的详细诊断信息,因此可能不适合作为默认设置。
没有 FallthroughCasesInSwitch
取决于你的编码风格。合并案例也有一些有效案例。
无隐式返回
已被分类为 stylistic matter。它不影响类型安全,因为编译器可以推断 return 类型而无需您显式声明它们。
noUnusedLocals/Parameters
TypeScript 有 functionality/IDE support 允许 VS Code 等编辑器将未使用的局部变量和参数显示为具有单独格式的未使用建议。所以你得到提示而不会受到太多编译错误的影响,例如当 noEmitOnError: true
.
最近在我的应用程序中我必须启用所有这些编译器选项:
"alwaysStrict": true,
"extendedDiagnostics": true,
"noFallthroughCasesInSwitch": true,
"noImplicitAny", true,
"noImplicitThis", true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"strict": true,
"strictBindCallApply": true,
"strictFunctionTypes": true,
"strictNullChecks": true,
"strictPropertyInitialization": true
它们用于更严格的编译,即更安全,我相信它们有助于获得更高质量的代码。我的问题是为什么默认情况下所有这些都被禁用。根据:https://www.typescriptlang.org/docs/handbook/compiler-options.html
您只需添加 strict: true
即可节省大量输入。它包括以下 compiler settings:
--noImplicitAny
--noImplicitThis
--alwaysStrict
--strictBindCallApply
--strictNullChecks
--strictFunctionTypes
--strictPropertyInitialization
严格
默认情况下禁用。我想,这简化了从 JS 项目到 TypeScript 的增量迁移,并且不会在开始时造成太多挫败感。
扩展诊断
由于它会输出用于调试目的的详细诊断信息,因此可能不适合作为默认设置。
没有 FallthroughCasesInSwitch
取决于你的编码风格。合并案例也有一些有效案例。
无隐式返回
已被分类为 stylistic matter。它不影响类型安全,因为编译器可以推断 return 类型而无需您显式声明它们。
noUnusedLocals/Parameters
TypeScript 有 functionality/IDE support 允许 VS Code 等编辑器将未使用的局部变量和参数显示为具有单独格式的未使用建议。所以你得到提示而不会受到太多编译错误的影响,例如当 noEmitOnError: true
.