SuperAPI AI 工具集

typescript-rules

编程与开发

查看项目

更新于 10-16 05:34

技能介绍

用途

本规则用于 TypeScript 实现与类型审查阶段,统一类型安全与错误处理方式,适用于后端实现、数据流处理及测试代码。

主要能力

数据流类型安全

采用分层模式:输入层(unknown)→ 类型守卫 → 业务层(类型已保证)→ 输出层(序列化)。后端典型场景包括:

  • API 通信:始终以 unknown 接收响应,用类型守卫校验
  • 表单输入:外部输入视为 unknown,校验后确定类型
  • 遗留系统集成:逐步断言,如 window as unknown as LegacyWindow
  • 测试代码:为 mock 定义类型,使用 Partial<T> 与 vi.fn<[Args], Return>()

编码约定

  • 类使用判断:推荐用函数与接口实现,以提升可测试性与函数组合灵活性;允许使用类的场景为框架要求(NestJS Controller/Service、TypeORM Entity 等)、自定义错误类、状态与业务逻辑紧密耦合(如 ShoppingCart、Session、StateMachine)。判断标准是「该数据是否具有行为」。
  • 函数设计:参数最多 0-2 个,3 个及以上使用对象参数。
  • 依赖注入:将外部依赖作为参数注入,保证可测试性与模块化。
  • 异步处理:始终使用 async/await,始终用 try-catch 处理,显式定义返回值类型(如 Promise<Result>)。
  • 格式规则:省略分号(遵循 Biome 设置);类型用 PascalCase,变量与函数用 camelCase;导入使用绝对路径(src/)。

错误处理

绝对规则:禁止抑制错误,所有错误必须有日志输出与适当处理;遵循快速失败原则,防止在无效状态下继续处理。禁止无条件回退(如 catch 中直接 return defaultValue 隐藏错误),应记录日志并重新抛出。可用 Result<T, E> 联合类型显式表达错误可能性。自定义错误示例:

export class AppError extends Error { constructor(message: string, public readonly code: string, public readonly statusCode = 500) { super(message) this.name = this.constructor.name } }

按用途细分:ValidationError(400)、BusinessRuleError(400)、DatabaseError(500)、ExternalServiceError(502)。后端分层处理:API 层转换为 HTTP 响应并记录日志(排除敏感信息);Service 层检测业务规则违规,按原样传播 AppError;Repository 层将技术错误转换为领域错误。

日志与敏感信息

日志中绝不可包含敏感信息(password、token、apiKey、secret、creditCard)。异步错误处理必须设置全局处理器:unhandledRejection、uncaughtException;所有 async/await 配合 try-catch,始终记录并重新抛出错误。

性能优化

大数据集使用流式处理;显式释放无用对象以防内存泄漏。

适用场景

  • 实现或评审 TypeScript 后端代码
  • 设计数据类型流与校验边界
  • 统一错误处理与日志规范
  • 编写类型安全的测试 mock

限制

资料未说明该规则支持的 TypeScript 版本、具体工具链集成方式、与特定框架的兼容范围及安装方式,暂未提供。