返回博客列表

Typescript更严格的类型检查配置

几个更严格的类型检查配置项,用来减少运行时踩坑

"strict": true 是一个总开关:一口气打开一整套严格类型检查。

它会打开哪些选项

开启后,相当于同时打开:

选项 作用(简述)
noImplicitAny 禁止隐式 any
strictNullChecks 严格对待 null / undefined
strictFunctionTypes 函数参数类型检查更严
strictBindCallApply bind / call / apply 参数要匹配
strictPropertyInitialization class 属性必须初始化
noImplicitThis 禁止隐式有问题的 this
alwaysStrict 编译时按严格模式解析
useUnknownInCatchVariables catch (e)eunknown 而不是 any

(具体列表随 TypeScript 版本可能略有增减,但核心就是上面这些。)

和单独选项的关系

"strict": true

≈ 上面那些选项全部为 true

如果你写了:

"strict": true,
"strictNullChecks": false

则以后面单独写的为准strictNullChecks 会被关掉,其它严格项仍开着。

要不要开

  • 新项目 / 学习 TS:建议开,能尽早发现类型问题
  • 从 JS 慢慢迁到 TS:可以先关,再逐个打开子选项

一句话

strict: true = “用最严的一套默认类型规则”,是 TypeScript 官方推荐的起步配置。