Agent Skills
返回列表
TS Pattern 穷尽匹配

TS Pattern 穷尽匹配

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f1b049da/kg20261476。

技能介绍

要解决的问题

TypeScript 项目里,判别联合(discriminated union)的状态分支往往越写越多:跟进状态要映射标签文案和颜色,表单保存要处理 idle/saving/success/error 四态,API 响应可能是 { type: 'ok' } 或 { type: 'err' } 的联合类型。手写 switch 时最隐蔽的 bug 不是逻辑写错,而是漏掉一个分支:新增了联合成员却忘了补 case,运行时直接掉进 default,状态悄悄变成了未知值。

核心能力

这个技能用 ts-pattern 的 match().exhaustive() 把这类问题交还给编译器:

  • 穷尽性检查:.exhaustive() 会逐一比对联合的所有成员,漏掉分支直接编译报错,而不是运行时静默兜底。
  • 长 switch 收敛:把模板里散落的超长 match 抽成纯函数,如 followStatusLabel、saveStateTip,让视图层保持干净。
  • 新增状态的协作流程:先改类型定义,再由编译器驱动补全分支,error 态带 message 一并自测。
  • 临时兜底:调试期可以用 .otherwise 补一个分支,但核心业务态优先保证穷尽。

适用边界

  • 不替代运行时校验:ts-pattern 只解决 TS 层面的穷尽性,API 入参仍需 Zod/Valibot 做 schema 校验,两者是互补而非替代。
  • 二选一不必上库:分支少于三个的场景,原生 switch 足够;分支 ≥3 或判别联合时收益最大。
  • 不要吞掉未知状态:用 default 兜底却不打日志,等于把编译期能发现的错误推迟到线上。
  • 无类型收益不硬上:纯 JavaScript 项目引入本库拿不到任何穷尽检查的好处。

使用场景

  • 跟进状态需要映射标签文案和颜色,用穷尽匹配避免漏掉新状态分支
  • 表单保存需处理idle/saving/success/error四态,靠编译报错发现遗漏分支
  • API响应为判别联合类型,用match处理ok和err分支确保类型安全
  • 长switch逻辑散落模板,抽成纯函数让视图层保持干净可维护

适合人员

  • 写TypeScript的前端工程师,需要编译器确保状态分支不遗漏
  • 开发表单交互的全栈工程师,依赖穷尽检查避免保存态逻辑缺陷
  • 维护组件库的开发者,要在多状态场景下保证类型安全与代码整洁
  • 使用判别联合处理API响应的后端工程师,希望编译期捕获未处理分支