Typescript更严格的类型检查配置
几个更严格的类型检查配置项,用来减少运行时踩坑
"strict": true 是一个总开关:一口气打开一整套严格类型检查。
它会打开哪些选项
开启后,相当于同时打开:
| 选项 | 作用(简述) |
|---|---|
noImplicitAny |
禁止隐式 any |
strictNullChecks |
严格对待 null / undefined |
strictFunctionTypes |
函数参数类型检查更严 |
strictBindCallApply |
bind / call / apply 参数要匹配 |
strictPropertyInitialization |
class 属性必须初始化 |
noImplicitThis |
禁止隐式有问题的 this |
alwaysStrict |
编译时按严格模式解析 |
useUnknownInCatchVariables |
catch (e) 里 e 是 unknown 而不是 any |
(具体列表随 TypeScript 版本可能略有增减,但核心就是上面这些。)
和单独选项的关系
"strict": true
≈ 上面那些选项全部为 true。
如果你写了:
"strict": true,
"strictNullChecks": false
则以后面单独写的为准:strictNullChecks 会被关掉,其它严格项仍开着。
要不要开
- 新项目 / 学习 TS:建议开,能尽早发现类型问题
- 从 JS 慢慢迁到 TS:可以先关,再逐个打开子选项
一句话
strict: true = “用最严的一套默认类型规则”,是 TypeScript 官方推荐的起步配置。