一个类型守卫库从 50 星到 100 星:属性级收窄成了刚需
来源:dev.to — 2026-10-21 · 约 7 分钟阅读
📋 概述
is-kit 从 50 星到 100 星之间最大的变化不是功能变多,而是把「我已经有一个好用的类型守卫,只想把它用在某个属性上」变成一等公民:新增 refineKey、refineDefinedKey 等属性级 API,并处理好必选属性、可选属性、数组下标之间的收窄差异。同时既有 API 变得更严格,作者也在更多自己的开源项目里用它,还因此撞上一个真实的类型推断边缘情况并反馈给上游项目。
🔑 核心要点
- 新增的属性细化 API 解决的是「守卫很好用,但只想作用于一个属性」这类被忽略的需求。
- 必选属性与可选属性的收窄规则不同,可选属性被证明存在后仍然要保留「可选」的语义。
- 库的真正价值不在让运行时检查变短,而在给所有检查一个可组合的统一形状。
- 真实使用暴露了上游类型系统的推断边界,作者把它写成 bug 报告而不是绕过。
💡 金句
“The interesting part was not that is-kit made those checks shorter. The interesting part was that it gave them one reusable shape.”
译:有意思的地方不是它让那些检查变短了,而是它给了它们一个可复用的统一形状。
← 返回 dev.to 首页