在前端日常开发中,我们无时无刻不在与对象、属性和异步数据打交道。为了优雅地处理可能为null或undefined的值,ES2020 引入了可选链操作符?.。然而,在 TypeScript 的世界里,还有一个经常被提及但也容易惹麻烦的兄弟操作符——非空断言操作符!.一、 什么是非空断言操作符!.?!.(在 TypeScript 中常写为a!.b,即非空断言操作符!加上属性访问符.)是 TypeScript 提供的一种类型断言机制。它的核心作用是:告诉编译器“我确定这个值在这里绝对不是null或undefined,你不用检查了,我相信它存在”。当你在某个变量后使用!.时,TypeScript 会将该变量的类型中的null和undefined移除,允许你直接访问其属性或调用其方法,而不会产生类型报错。基本语法示例: