关于 ts-best-practices
这项 TypeScript 规范技能面向编写或审查 TypeScript 的开发者,列出更安全的类型建模、数据验证和穷尽处理规则。
主要功能
- 01避免不安全的类型断言
- 02优先使用 unknown 而非 any
- 03用可辨识联合建模变体
- 04采用经过验证的类型守卫与收窄
- 05检查 switch 分支是否穷尽
适用场景
- 01审查 TypeScript 中的不安全断言
- 02在边界处验证外部数据
- 03为不同变体的数据定义类型
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ poteto/ noodle --skill ts-best-practices安装后在 Claude Code 中输入/ts-best-practices确认已加载。
附带文件references/patterns.md
详细介绍
类型安全
本项目的 TypeScript 策略。编写或审查 TypeScript 时请遵循。
| 规则 | 概要 |
|---|---|
不使用 as 类型断言 | 每个 as 都可能导致运行时崩溃。在边界处进行验证,只有在有充分依据时才进行类型断言。优先使用 Zod/Valibot,而非手动验证。 |
使用 unknown 而非 any | any 会关闭其涉及的一切类型检查。外部数据始终是 unknown。 |
| 判别联合 | 使用共享的字面量判别字段对变体建模。不要使用可选字段集合。 |
| 缩窄层级 | 优先顺序:判别联合 switch > in 运算符 > typeof/instanceof > 类型守卫 > as |
| 类型守卫 | 必须实际验证所声称的类型。将其命名为 isX 或 hasX。如果可行,优先使用判别字段缩窄。 |
| 穷尽性检查 | 对判别联合使用的 switch,始终添加 default: never 分支。使用 absurd() 辅助函数减少样板代码。 |
使用 satisfies 而非 as | 在验证值符合某类型且不扩大类型时,使用 satisfies 保留字面量类型。 |
| 不可能状态 | 如果排查 bug 时需要问“这种组合会发生吗?”,说明类型过于宽松。应收紧类型。 |
请阅读 references/patterns.md,查看每条规则的代码示例。
评论
支持 Markdown