SuperAPI AI 工具集

type-coverage

智能体与模型

查看项目

更新于 10-16 00:06

技能介绍

用途:监测代码中「有真实类型」与 any 的占比,即类型覆盖率,用于 JavaScript 迁移 TypeScript、长期维护类型质量、代码评审和消除 any 的进度衡量。核心原则是「被测量的才会被管理」,应跟踪覆盖率并设定目标。

主要能力:type-coverage 计算被覆盖符号数除以总符号数,例如输出 23384/24058 97.20%;加 --detail 会列出哪些符号是 any,如 src/api.ts:15:7 - data。any 的来源包括显式 any、关闭 noImplicitAny 时的隐式 any、库返回的 any(如 JSON.parse、jQuery)以及会传染的 any(从函数返回类型扩散)。

使用方式:npm install -g type-coverage 后运行 type-coverage --detail;在 package.json 中配置 "type-coverage": "type-coverage --at-least 95",低于阈值即让 CI 失败。可在 husky pre-commit 钩子或 GitHub Actions 中执行 npx type-coverage --at-least 95,并用基线文件实现覆盖率不允许下降。改进策略包括用 zod 校验替代 JSON.parse、为库补充类型声明、用 unknown 替代 any、添加显式类型注解。团队可设迁移起点 50%、阶段 75%/90%、稳定 95%+ 等目标。

限制:有时 any 不可避免,需要注释说明并登记工单;该技能不承诺达到 100%,只强调跟踪可改进部分、阻止新增 any,先止损再逐步修复旧代码。

参考来源:基于 Dan Vanderkam《Effective TypeScript》第 49 条。