不中招的类型守卫:用 is-kit 驯服 unknown
来源:dev.to — 2026-10-31
📋 概述
一篇万圣节包装下的 TypeScript 实战教程:把 unknown 比作从坟里爬出来的僵尸——它可能真的是僵尸,也可能只是只小猫,所以在验证之前你连 creature.message 都读不到,这正是 unknown 与 any 的关键区别。作者用 is-kit 一级级打怪:先是 isString 这样的单值守卫,再面对装满糖果、带嵌套 keeper 对象和可选字段的「大南瓜」,最后用 struct、arrayOf、optionalKey、isNumber、isBoolean 组合出一次完整的结构校验,让后续代码在类型上真正安全,而不是靠一句 typeof 硬撑。
🔑 核心要点
- unknown 是「尚未验证」,不是「什么都行」:any 让你随便取值但不给保护,unknown 逼你先证明类型再访问属性。
- 单个 typeof 只够守住第一关:嵌套对象、数组、可选键出现后,手写判断会迅速膨胀成难以维护的一串 if。
- 结构校验器把检查与类型收窄合到一起:struct 与 arrayOf 组合后,通过校验就等于拿到了正确的窄类型,运行期与编译期不再各说一套。
- optionalKey 处理真实世界的不完整数据:JSON 里字段经常缺失,可选键要显式建模,否则就会用 undefined 埋下一次线上事故。
💡 金句
unknown means we haven't verified the value yet.
译:unknown 的意思是:我们还没有验证过这个值。
👍 0
👎 0
← 返回 dev.to 首页