SuperAPI AI 工具集

typescript-migration

编程与开发

查看项目

更新于 10-15 20:35

技能介绍

用途:指导把 JavaScript 项目(或其中部分)逐步迁移到 TypeScript,适用于遗留代码库的渐进式改造,避免一次性重写。触发场景包括:将 JS 项目转为 TS、为现有 JS 项目引入 TypeScript、为遗留代码补类型、减少 any 使用、增量提升类型安全、为 JS/TS 混合代码库配置 tsconfig。

核心原则:绝不一次性重写全部代码,从依赖树的叶子节点开始逐文件迁移,每个中间状态都必须是可运行的代码库。

主要阶段:

  1. 项目设置:安装 typescript 与 @types/node,按框架安装 @types/react、@types/react-dom、@types/express 等;创建宽松的 tsconfig.json,关键项为 allowJs: true、checkJs: false、strict: false、noImplicitAny: false;更新构建工具(Vite、Next.js 零配置,Webpack 需 ts-loader)。
  2. 重命名与修复:先迁移无内部导入的叶子文件,逐文件执行 mv src/utils/formatDate.js src/utils/formatDate.ts,用 npx tsc --noEmit 检查错误;为导出函数补参数与返回类型,复杂对象定义 interface/type,尽量用 unknown 替代 any。
  3. 类型边界:为公共 API、共享接口、API 响应、事件/消息负载建立共享类型文件(如 src/types/patient.ts、api.ts、hpk.ts),可用判别联合实现类型安全的消息处理。
  4. 收紧编译器:按顺序逐项启用 strictNullChecks、noImplicitAny、noImplicitReturns、noFallthroughCasesInSwitch,最后 strict: true;每步先修完错误再进入下一步。处理 strictNullChecks 用守卫子句、可选链、非空断言(最后手段);消除 any 可用 unknown、类型守卫或 Zod 校验解析。
  5. 严格模式:全部文件为 .ts 且各项严格检查通过后,设 strict: true 并移除 allowJs。

还包含遗留代码常见模式:回调改 Promise、动态对象用 Record 或索引签名、为无类型第三方库编写 .d.ts 声明、Express 中间件类型扩展。

限制与注意:资料未提供该技能的安装命令、调用方式、平台支持、收费或效果数据;内容为迁移方法论与示例,实际迁移需团队协作、构建管线支持 .ts、IDE 配置 tsserver,并逐文件提交 PR,避免 as any、迁移中重构、先开严格模式、先迁测试文件等常见陷阱。