← [ BACK_TO_NOTES ]

TypeScript 中的 strict

说明 strict 为什么是 TypeScript 配置的总开关、它会开启什么类型检查族选项,以及为什么升级 TS 版本后 strict 项目更容易出现新报错。

#dev #typescript #concept #growing

[!info] related notes

TypeScript 中的 strict

一句话定义

strict 是 TypeScript 一组严格类型检查行为的总开关。

核心机制 / 工作原理

当配置:

{
  "compilerOptions": {
    "strict": true
  }
}

时,TypeScript 会同时开启一组 strict family 选项。

官方文档明确说明:

  • strict 等价于打开一整组更严格的类型检查行为
  • 之后仍然可以按需单独关闭某个子开关

最小例子 / 最小场景

常见默认推荐

{
  "compilerOptions": {
    "strict": true
  }
}

这通常是现代 TypeScript 项目的推荐起点。

为什么它重要

strict 的价值不在于“更难写代码”,而在于更早暴露:

  • 空值风险
  • 隐式 any
  • 过宽的函数参数 / 返回值
  • 类型收窄不完整

当前更值得单独拆出来理解的 strict family 子项包括:

边界与易混淆点

strict 不是单一规则

它是一个总开关,不是一条具体报错规则。

开了 strict 不代表类型系统就完整了

它能显著提高静态保证,但仍然不能替代:

  • 运行时校验
  • 外部输入验证
  • API schema 校验

升级 TypeScript 时可能出现新报错

官方文档特别提醒:未来 TypeScript 版本可能会把新的更严格检查纳入 strict,所以升级后项目可能新增类型错误。

很多团队还会额外叠加更细的安全开关

例如索引签名访问的安全性,就常继续细化到:

可选属性和 catch 变量的语义,也常继续细化到:

另外还有一些常和 strict 搭配使用、但更像相邻质量开关的选项,例如:

参考信息

创建于 2026/5/15 更新于 2026/7/15
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本