typescript-前端规范.md 2.5 KB


description: 前端应用的 TypeScript 编码标准和最佳实践

TypeScript 最佳实践

类型系统

  • 对对象定义优先使用 interface 而非 type
  • 对联合类型、交叉类型和映射类型使用 type
  • 避免使用 any,对未知类型优先使用 unknown
  • 使用严格的 TypeScript 配置
  • 利用 TypeScript 的内置工具类型
  • 对可复用的类型模式使用泛型

命名约定

  • 对类型名称和接口使用 PascalCase
  • 对变量和函数使用 camelCase
  • 对常量使用 UPPER_CASE
  • 使用带辅助动词的描述性名称(例如 isLoading, hasError)
  • React props 的接口前缀使用 'Props'(例如 ButtonProps)

代码组织

  • 将类型定义保持在使用位置附近
  • 共享时从专用类型文件导出类型和接口
  • 使用桶导出(index.ts)组织导出
  • 将共享类型放在 types 目录中
  • 将组件 props 与其组件放在一起

函数

  • 对公共函数使用显式返回类型
  • 对回调和方法使用箭头函数
  • 使用自定义错误类型实现适当的错误处理
  • 对复杂类型场景使用函数重载
  • 优先使用 async/await 而非 Promises

最佳实践

  • 在 tsconfig.json 中启用严格模式
  • 对不可变属性使用 readonly
  • 利用可辨识联合类型确保类型安全
  • 使用类型守卫进行运行时类型检查
  • 实现适当的 null 检查
  • 除非必要,否则避免类型断言

错误处理

  • 为特定领域的错误创建自定义错误类型
  • 对可能失败的操作使用 Result 类型
  • 实现适当的错误边界
  • 使用带类型的 catch 子句的 try-catch 块
  • 正确处理 Promise 拒绝

设计模式

  • 对复杂对象创建使用建造者模式
  • 对数据访问实现仓储模式
  • 对对象创建使用工厂模式
  • 利用依赖注入
  • 使用模块模式进行封装

类型安全

  • 使用严格的 null 检查
  • 避免使用类型断言(as),除非绝对必要
  • 使用类型守卫函数进行运行时验证
  • 利用 TypeScript 的控制流分析
  • 使用 const 断言提高类型推断

泛型使用

  • 为可复用组件和函数使用泛型
  • 为泛型参数使用有意义的名称
  • 使用泛型约束限制类型参数
  • 避免过度使用泛型导致代码复杂化

导入和导出

  • 使用命名导出而非默认导出
  • 按逻辑分组组织导入语句
  • 使用路径别名简化导入路径
  • 避免循环依赖

性能考虑

  • 使用适当的类型推断减少类型注解
  • 避免过度复杂的类型计算
  • 使用类型缓存优化编译性能
  • 合理使用类型断言避免性能损失