别让 TypeScript 的 as 断言变成运行时炸弹:从一次线上白屏说起
上周排查了一个线上问题,页面在部分用户手机上直接白屏,控制台报 Cannot read property 'name' of undefined。定位到代码时发现是一段从接口获取数据后直接用了 as User,然后访问 user.profile.name。接口文档写的是 profile 一定存在,但实际后端在老版本客户端上偶尔不下发这个字段。TypeScript 编译时毫无怨言,因为 as User 把类型强制对齐了,运行时却炸了。这类问题在日常开发里非常常见,as 断言绕过了类型检查,把风险从编译期推到了运行期。这篇文章会聊清楚 as 断言的三个典型误用场景,以及如何用类型守卫、unknow...