← [ BACK_TO_NOTES ]

TypeScript 中的 strictNullChecks

说明 strictNullChecks 为什么让 null 和 undefined 拥有独立类型,以及它为什么是 TypeScript 严格模式里最关键的开关之一。

#dev #typescript #concept #growing

[!info] related notes

TypeScript 中的 strictNullChecks

一句话定义

strictNullChecks 会让 null 和 undefined 不再被默认为“可以塞进任何类型里”。

核心机制 / 工作原理

官方文档明确说明:

  • 当它为 false 时,null 和 undefined 会被语言基本忽略
  • 当它为 true 时,它们拥有各自独立的类型

这直接改变很多 API 返回值和控制流推断。

官方文档的典型例子是:

const loggedInUser = users.find((u) => u.name === loggedInUsername);
console.log(loggedInUser.age);

在 strictNullChecks: true 下,find 的结果会是:

  • User | undefined

所以对 age 的直接访问会报错。

最小例子 / 最小场景

{
  "compilerOptions": {
    "strictNullChecks": true
  }
}

这通常会让你开始显式处理:

  • 查找失败
  • 可空输入
  • 可能缺席的值

边界与易混淆点

它是 TypeScript 严格性的基石之一

很多其他严格选项的价值,都是建立在“undefined 真的会出现在类型里”这个前提上。

它不只是多报错,而是改变 API 类型面貌

一旦开启,标准库和常见方法的返回类型也会随之更真实。

它经常被视为最重要的严格开关之一

TypeScript 官方基础文档里也特别强调:

  • noImplicitAny
  • strictNullChecks

是最值得先理解的两项严格性开关。

参考信息

创建于 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
关闭浮层 / 取消命令;输入框内清空文本