SuperAPI AI 工具集

type-safety

编程与开发

查看项目

更新于 10-16 06:46

技能介绍

用途:修复 TypeScript 严格类型检查报出的不安全操作,这些操作会导致类型系统无法保证运行时正确性。优先级为 P1,建议本周内处理。

主要能力与流程:先识别不安全操作类型(成员访问、赋值、返回、调用、参数),再追溯 any 或 unknown 的来源,套用对应修复模式,最后用 npx tsc --noEmit 验证。

典型修复:

  • 不安全成员访问(@typescript-eslint/no-unsafe-member-access):用可辨识联合配合类型守卫,先校验再访问属性。
  • 不安全赋值(no-unsafe-assignment):在解析边界用校验函数处理 JSON.parse 等返回的 any。
  • 不安全返回(no-unsafe-return):为函数加显式返回类型,如 Promise<User | null>。
  • 不安全调用(no-unsafe-call):为函数引用定义类型别名,如 type EventHandler = (event: Event) => void。
  • 不安全参数(no-unsafe-argument):在数据源头统一校验,而不是在每个调用点处理。
  • any 使用:按场景替换为 unknown 加类型守卫、泛型参数 <T> 或正式接口定义。
  • 不安全模板表达式(restrict-template-expressions):用 String() 转换、空值兜底或 JSON.stringify 输出对象。

脚本:从技能目录运行 node scripts/detect-type-issues.js /path/to/src 可输出含文件位置和修复建议的 JSON 报告;node scripts/generate-type-guard.js --interface "User" --file /path/to/types.ts 可按接口生成类型守卫。模板涵盖简单对象、数组、联合类型和嵌套对象守卫。复杂校验可考虑引入 Zod,通过 z.infer 推导类型并用 schema.parse 解析。

常见 any 来源:JSON.parse()、类型不全的外部库、DOM 事件目标、动态属性访问,以及 as unknown as T 这类断言。应在源头修复以免扩散。限制:资料未提供该技能的安装方式与收费信息。