关于 typescript-best-practices
为编码 Agent 提供 TypeScript 类型系统规范的技能,强调边界校验、精确建模与穷尽性检查,帮助减少不安全类型操作。
主要功能
- 01使用判别联合表达变体
- 02用品牌类型区分原始值
- 03优先使用 unknown 而非 any
- 04限制断言并强调数据校验
- 05检查分支穷尽性
- 06从 Schema 推导类型
适用场景
- 01为外部输入设计边界校验
- 02建模状态变体并避免无效状态
- 03审查类型守卫与断言
- 04为函数参数选择对象形式
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ poteto/ plugins --skill typescript-best-practices安装后在 Claude Code 中输入/typescript-best-practices确认已加载。
附带文件references/patterns.md
详细介绍
TypeScript 最佳实践
请先应用 type-system-discipline 原则技能;该技能将此原则落实到 TypeScript 语法中。
| 规则 | 概要 |
|---|---|
| 可辨识联合 | 使用 kind 字面量判别字段对变体建模,确保无法表示不可能的状态。不要使用包含可选字段的对象。 |
| 品牌类型 | 使用 & { readonly __brand: "X" } 为原始类型添加品牌,避免混淆。创建时验证一次。 |
优先使用 unknown,而非 any | 外部数据的类型是 unknown。any 会在所有涉及它的地方禁用类型检查。 |
不使用 as 类型断言 | 每个 as 都可能引发运行时崩溃。仅在验证后才进行类型断言。 |
| 类型收窄层级 | 判别字段 switch > in 运算符 > typeof/instanceof > 用户定义的类型守卫 > as。 |
| 类型守卫 | 必须验证所声明的判断。说谎的类型守卫比 as 更糟糕,因为错误会藏在一个看似安全的名称后面。将其命名为 isX 或 hasX。 |
| 穷尽性检查 | 在 default 分支中内联 const _exhaustive: never = x;,这样添加新变体时编译器就会报错。 |
优先使用 satisfies,而非 as | 验证值,同时避免扩大字面量类型。 |
| 边界验证 | 在数据进入系统时验证;在内部信任类型。参见 boundary-discipline 原则技能。 |
| 从 schema 派生类型 | 声明新接口前,优先考虑使用 Pick/Omit/Parameters/ReturnType/Awaited/typeof。 |
| 对象参数 | 传递对象而非位置参数,让参数顺序一目了然。在高频路径中除外(逐帧渲染、分词器、解析器)。 |
示例:references/patterns.md。
评论
支持 Markdown