Agent Skills
返回列表
💻

TypeScript 进阶实战

开发编程 更新于 2026.08.30

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

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/typescript-advanced-sh-497uh4 技能。

技能介绍

你在 TypeScript 项目里反复踩的那些坑

接手一个中大型 TypeScript 项目,最常见的问题不是“类型没写”,而是类型写得太松或太绕:外部接口返回的数据直接标成 any 就往下传;状态机里 status 字段一会儿是字符串字面量,一会儿又是枚举,switch 分支永远写不全;为了让一个泛型函数“万能”,给它套了三层 extends,半年后没人敢动。

这些写法短期内能跑,长期代价是重构时编译器帮不上忙、运行时错误推迟到线上才暴露、新人读类型签名要猜半天。

这个技能解决什么

它把一组被反复验证的类型实践整理成可对照执行的清单,覆盖六个核心方向:

  • 泛型约束:用 extends 给泛型加上边界,避免 T 被当成 any 随意滥用
  • 条件类型与映射类型:根据输入推导输出形态,比如从接口响应推导表单模型
  • 可辨识联合:给状态和 Result 类型加一个字面量判别字段,让 switch 具备穷尽性检查
  • 类型守卫:用 typeof、in 或自定义谓词在运行时校验数据,替代不安全的 as 断言
  • 工具类型组合:优先用 Pick、Omit、Partial、Readonly 派生类型,而不是手写一份重复的 interface
  • 模板字面量类型:对字符串模式做类型层面的约束,比如 "${string}-${string}"

反模式与检查项

技能明确列出了五类要避免的写法,其中包括:对不确定类型的外部数据用 any 而不是 unknown;在类型守卫更安全的场景下使用 as 断言;用 enum 表达其实字符串字面量联合就够了的场景;以及在 tsconfig 中忽略 strictNullChecks。

同时提供一份可直接勾选的清单,第一条就是 strict: true 必须在 tsconfig 中开启,后续条目覆盖外部数据落地、运行时校验、状态建模、泛型边界与类型派生等关键环节。

适用边界

这份清单的价值取决于你是否真的打开严格模式。如果项目还停留在 strict: false 的状态,类型守卫和穷尽性检查的收益会大打折扣。另外,模板字面量类型在需要拼装复杂命名(如路由路径、事件名)时很实用,但不适合用来描述深层嵌套的数据结构——那种场景用映射类型加递归类型更合适。

它不是一份“万能类型手册”,而是一套让编译器真正参与设计的约束清单。

使用场景

  • 重构前端状态管理时,用可辨识联合建模状态机,配合 switch 穷尽性检查防止遗漏分支
  • 对接第三方 API 时,用 unknown 承接外部数据,再通过类型守卫在边界完成运行时校验
  • 设计 SDK 或工具库的公共泛型签名时,用 extends 施加约束,避免 T 退化为 any
  • 梳理表单与接口字段映射关系时,用 Pick、Omit、Partial 等工具类型派生模型,减少重复定义

适合人员

  • 前端工程师:要在状态机和异步流程里建立可靠且可推导的类型模型
  • Node.js 后端或 BFF 开发者:需要在接口边界安全解析外部数据,阻断运行时风险
  • 共享工具库维护者:要设计可复用的泛型签名和工具类型组合,供团队长期使用
  • TypeScript 技术负责人:要统一严格模式与类型实践规范,并为现有代码制定整改清单