编写更安全的 TypeScript 代码
TypeScript 的编译器 tsc 提供了许多选项可以让编译器在编译时进行更严格的检查,从而使得我们编写的代码更安全、更健壮。 不过出于对 JavaScript 和为旧版本 TypeScript 编写的代码的兼容性考虑,这些选项默认都是关闭的,需要手动在命令行上或 tsconfig.json
中指定。
因此,如果想要最高程度的代码检查的话,我们需要一一指定每一个检查选项。
幸运的是,从 TypeScript 2.3 版本开始,tsc 提供了 --strict
选项,指定该选项后,会默认启用一系列(并非全部)更严格的检查,免去了一一指定单独选项的麻烦。
此外,需要注意的是,由于 --strict
选项所包含的检查会随着 TypeScript 版本的升级而增加,因此,在指定了该选项后,有可能导致在当前 TypeScript 版本下能够顺利编译的代码,到了新版本的 TypeScript 上,由于代码检查变得更为严格而无法直接编译通过。
下面是列出了当前所有可用的检查选项,以及 --strict
选项是否会启用这些选项的对照表:
选项 | 默认值 | 启用 --strict 后的值 |
选项最早可用版本 |
---|---|---|---|
--strict |
false |
true |
2.3 |
--alwaysStrict |
false |
true |
2.1 |
--strictNullChecks |
false |
true |
2.0 |
--noImplicitAny |
false |
true |
0.9.1 |
--noImplicitThis |
false |
true |
2.0 |
--noImplicitReturns |
false |
false |
1.8 |
--noFallthroughCasesInSwitch |
false |
false |
1.8 |
--noUnusedLocals |
false |
false |
2.0 |
--noUnusedParameters |
false |
false |
2.0 |
--forceConsistentCasingInFileNames |
false |
false |
1.8 |
关于各选项的具体作用,请参阅 编译选项 · TypeScript中文网 或 Compiler Options · TypeScript。