不中招的类型守卫:用 is-kit 驯服 unknown
来源:dev.to — 2026-10-31
📋 概述
一篇万圣节主题的 TypeScript 教材。作者从墓里爬出来的 unknown 僵尸讲起:unknown 和 any 不同,TypeScript 不允许你随便访问它的属性,因为谁也不知道它到底是僵尸、幽灵还是猫。用一行 typeof 判断可以做窄化,但怪物变大就撑不住了——面对一个装满糖果的巨大 unknown 南瓜,你需要逐字段检查,于是引入 struct 组合守卫,让多个形状窄化可以拼起来复用。全篇用章节式故事推进,核心观点是:unknown 逼你在触碰一个值之前先证明它是什么,这是好事。
🔑 核心要点
- unknown 与 any 的关键差别是先验证才能碰:不窄化就直接访问属性,TypeScript 会当场拒绝编译。
- 单一 typeof 检查适合简单值:一旦对象变复杂,手写判断会迅速膨胀成一大片。
- struct 把多个守卫组合成可复用的形状:组合后的守卫既能校验深层字段,又能保持类型推断。
- 文章用恐怖故事驱动讲解:僵尸、南瓜、吸血鬼分别对应不同的类型窄化场景。
💡 金句
unknown means we haven't verified the value yet.
译:unknown 的意思是:我们还没验证过这个值。
👍 0
👎 0
← 返回 dev.to 首页