SuperAPI AI 工具集

type-safety-rules

编程与开发

查看项目

更新于 10-15 09:53

技能介绍

用途

Type Safety Rules 是一套「以审查为导向」的规则集,目标是在 TypeScript 代码库中排查类型系统的侵蚀(type-system erosion)。它以审计清单的形式组织,共 20 条规则、7 个类别,并按照影响范围(blast radius)从高到低排序。该规则集被 type-safety-auditor 智能体用作审计清单,同时也可以脱离该智能体,在编写或加固 TypeScript 代码时单独使用。

规则分类(按优先级)

优先级 类别 影响 前缀
1 Any Erosion(any 侵蚀) CRITICAL any-
2 Unsound Casts(不健全的类型断言) CRITICAL cast-
3 Boundary Validation(边界校验) CRITICAL boundary-
4 Assertion Abuse(断言滥用) HIGH assert-
5 Compiler Configuration(编译器配置) HIGH config-
6 Exhaustiveness(穷尽性) MEDIUM-HIGH exhaust-
7 Generics Soundness(泛型健全性) MEDIUM generics-

规则速查

1. Any Erosion(CRITICAL)

  • any-explicit:将显式 any 替换为 unknown 加类型收窄。
  • any-implicit-boundary:立即为 JSON.parse、response.json() 和 catch 的结果标注类型。
  • any-generic-default:永远不要将类型参数的默认值设为 any。

2. Unsound Casts(CRITICAL)

  • cast-as-unsound:改变形状的 as 断言应改用运行时检查。
  • cast-double:as unknown as X 是对类型系统的绕过,应编写类型守卫或转换器。
  • cast-const-assertion:使用 as const 做字面量收窄,而不是使用放宽的类型标注。

3. Boundary Validation(CRITICAL)

  • boundary-http:在边界处用 schema 解析 HTTP 载荷。
  • boundary-queue:在处理前校验队列和事件消息。
  • boundary-storage:对存储读取(localStorage、文件、DB JSON)进行校验并加上版本。
  • boundary-env:通过单一且经过校验的配置模块访问环境变量。

4. Assertion Abuse(HIGH)

  • assert-non-null:! 需要有相邻的不变量说明,或改用快速失败检查。
  • assert-ts-expect-error:使用带原因的 @ts-expect-error,绝不要用 @ts-ignore。

5. Compiler Configuration(HIGH)

  • config-strict:"strict": true 是基线配置。
  • config-unchecked-index:启用 noUncheckedIndexedAccess。
  • config-exact-optional:启用 exactOptionalPropertyTypes。
  • config-skiplibcheck:skipLibCheck 可以用来加速第三方类型,但绝不能用来掩盖第一方错误。

6. Exhaustiveness(MEDIUM-HIGH)

  • exhaust-switch-never:可辨识联合的 default 分支要加上 never 断言。
  • exhaust-satisfies-record:对完整的查找表使用 satisfies Record<K, V>。

7. Generics Soundness(MEDIUM)

  • generics-constraint:在公开 API 上约束类型参数。
  • generics-type-guards:类型谓词必须验证它所声称的整个结构。

如何使用

阅读 rules/ 目录下的各个规则文件,获取详细说明和代码示例。每个规则文件都包含简短说明、错误示例、正确示例,以及供评审者使用的检测提示。

适用场景

  • 对既有 TypeScript 代码库进行类型安全审计。
  • 在团队代码评审中作为类型相关问题的检查清单。
  • 在编写新 TypeScript 代码时进行加固与自查。
  • 配合 type-safety-auditor 智能体开展自动化类型审查。

限制

资料中未说明该规则集对具体 TypeScript 版本、构建工具或框架的依赖要求,也未提供规则的安装方式或自动化执行方式,相关内容暂未提供。