SuperAPI AI 工具集

typescript-best-practices

编程与开发

查看项目

更新于 10-15 12:16

技能介绍

用途

TypeScript Best Practices 是一个面向 AI 智能体的技能,用于指导 AI 编写高质量的 TypeScript 代码。它提供编码标准、架构模式,以及用于分析和脚手架的工具。

何时使用

适用场景:

  • 生成新的 TypeScript 代码
  • 审查 TypeScript 文件的质量问题
  • 创建新的模块、服务或组件
  • 将 JavaScript 重构为 TypeScript
  • 回答关于 TypeScript 模式或类型的问题
  • 设计 API 或接口

不适用场景:

  • 处理纯 JavaScript(无 TypeScript)
  • 调试运行时错误(应使用调试工具)
  • 框架特定模式(React、Vue 等,应使用框架技能)

核心原则

1. 类型安全优先

最大化编译期错误检测:对未知类型优先使用 unknown 而非 any;为公共 API 显式标注返回类型;使用 const 断言生成字面量类型。

2. 默认不可变

防止意外修改:对象属性使用 readonly;集合使用 ReadonlyArray;优先使用展开而非修改。

3. 带类型的错误处理

使用类型系统处理错误:为可恢复错误使用 Result 类型;使用类型化错误类;函数可返回 Result 返回类型。

4. 代码组织

为可维护性组织代码:一个文件一个概念;显式导出(不使用 barrel 文件通配符)。

快速参考

类别 推荐 避免
未知类型 unknown any
集合 ReadonlyArray<T> 输入使用 T[]
对象 Readonly<T> 默认可变
空值检查 可选链 ?. != null
类型收窄 类型守卫 as 断言
返回类型 导出时显式 导出时推断
枚举 字符串字面量联合 数字枚举
导入 具名导入 默认导入
错误 Result 类型 用抛出控制流程
循环 for...of、.map() 对数组用 for...in

代码生成指南

生成 TypeScript 代码时遵循以下模式:

模块结构:包含模块描述注释、类型定义(导出接口)、常量(默认选项)、实现(导出函数)。

函数设计:优先纯函数;显式参数类型;复杂签名使用函数重载。

接口设计:对象形状优先使用 interface;联合与交叉使用 type;使用 JSDoc 文档。

常见反模式

生成代码时避免以下模式:

反模式 问题 解决方案
any 类型 禁用类型检查 使用 unknown 并收窄
as 断言 运行时错误 使用类型守卫
非空 ! 空指针错误 可选链 ?.
可变参数 意外修改 Readonly<T>
魔法字符串 拼写错误、无自动补全 字符串字面量类型
上帝类 难以测试/维护 单一职责
循环依赖 构建/运行时问题 依赖倒置
索引签名 丢失类型信息 显式属性

详细示例见 references/anti-patterns/common-mistakes.md。

脚本参考

analyze.ts

分析 TypeScript 代码的质量问题:

deno run --allow-read scripts/analyze.ts <path> [options]

选项:--strict(启用所有检查)、--json(输出 JSON 供程序化使用)、--fix-hints(显示建议修复)。

generate-types.ts

从 JSON 数据生成 TypeScript 类型:

deno run --allow-read --allow-write scripts/generate-types.ts <input> [options]

选项:--name <name>(根类型名,默认推断)、--output <path>(输出文件路径)、--readonly(生成 readonly 类型)、--interface(使用 interface 而非 type)。

scaffold-module.ts

创建结构正确的 TypeScript 模块:

deno run --allow-read --allow-write scripts/scaffold-module.ts [options]

选项:--name <name>(模块名,必填)、--path <path>(目标目录,默认 ./src)、--type <type>(类型:service、util、component)、--with-tests(包含测试文件)。

附加资源

类型系统深入:references/type-system/advanced-types.md(泛型、条件类型、映射类型)、references/type-system/type-guards.md(类型收窄技术)、references/type-system/utility-types.md(内置工具类型)。

模式指南:references/patterns/error-handling.md(Result 类型、类型化错误)、references/patterns/async-patterns.md(async/await 最佳实践)、references/patterns/functional-patterns.md(不可变性、组合)、references/patterns/module-patterns.md(导出、依赖注入)。

架构:references/architecture/project-structure.md(目录组织)、references/architecture/api-design.md(接口设计、版本控制)。

模板:assets/templates/module-template.ts.md(模块起始模板)、assets/templates/service-template.ts.md(服务类模板)、assets/tsconfig-presets/strict.json(最大严格度配置)、assets/tsconfig-presets/recommended.json(平衡默认值)。