逐文件转换策略
逐步将 .js 重命名为 .ts,同时避免破坏任何功能
逐文件转换策略 是 CoddyKit 上的免费 TypeScript Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 TypeScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 TypeScript Academy 课程共包含 4 节课。
渐进式方法
按文件转换意味着每次将一个 .js 文件重命名为 .ts,并在过程中修复类型错误。这样可以让项目在每一步都保持通过编译。
# Step 1: rename
mv src/utils.js src/utils.ts
# Step 2: fix errors
npx tsc --noEmit
# Step 3: commit and repeat选择起点
从叶模块开始——也就是不从其他项目文件导入内容的文件。这些文件没有下游 TypeScript 依赖需要优先满足。
# Find files with fewest imports from other project files:
grep -r "from './" src --include="*.js" | sort | uniq -c | sort -n
# Convert lowest-count files first处理隐式 any 错误
将 JS 文件重命名为 .ts 后,如果 noImplicitAny: true,没有类型的参数就会变成隐式 any 错误。请添加明确类型,或暂时使用 any。
// Before: JS
function process(data) { return data.value; }
// After: TS (add annotation)
function process(data: { value: string }) { return data.value; }
// Or temporarily:
function process(data: any) { return data.value; }暂时抑制错误
在难以修复的行上使用 // @ts-ignore,并将它们记录为 TODO,避免遗忘。
// TODO: type this properly in follow-up PR
// @ts-ignore
const result = complexLegacyFunction(x);更新导入语句
文件变为 .ts 后,使用它的代码可能需要更新导入语句。TypeScript 会自动解析 .ts 文件,因此导入路径中无需包含文件扩展名。
// No extension needed — TypeScript finds .ts
import { process } from "./utils";转换第三方 require
在转换过程中,将 CommonJS 的 require 调用替换为 ES 模块的 import 语法,以匹配 TypeScript 的模块解析方式。
// Before: CommonJS
const fs = require("fs");
// After: ES module
import fs from "fs";逐步启用严格模式
使用按文件的 // @ts-strict-ignore 注释,或迁移到一个启用了严格模式的独立 tsconfig,逐步为每个文件启用严格检查标志。
// tsconfig.strict.json — points to converted files only
{
"extends": "./tsconfig.json",
"compilerOptions": { "strict": true },
"include": ["src/converted/**/*"]
}跟踪剩余文件
维护清单,或使用脚本统计剩余的 .js 文件,并持续跟踪迁移进度。
find src -name "*.js" | wc -l # remaining JS files
find src -name "*.ts" | wc -l # converted TS files避免大型 PR
每个 PR 转换一个文件,以便控制审查规模。将大型 TypeScript 迁移限定到单个文件后,更容易进行审查和回退。
# Good: one file per PR
# Bad: 50 files renamed in one PR每次转换后运行测试
每次转换文件后都运行测试套件,以发现 TypeScript 类型检查可能无法捕获的运行时回归问题。
npm test
# Ensure all tests pass after each .js → .ts rename回顾:按文件转换策略
先转换叶文件,修复或抑制错误,让项目在每一步都保持通过编译,跟踪剩余的 JS 文件,并在每个 PR 中提交一个文件,以便进行有效审查。
快速检查
在按文件迁移中,应该先将哪些文件转换为 TypeScript?
您学到的内容
按文件迁移:从叶模块开始,将文件重命名为 .ts,修复或抑制错误,让项目保持通过编译,并跟踪进度。每个 PR 进行小规模转换,可以让迁移更安全、更易于审查。
常见问题解答
「逐文件转换策略」课时是免费的吗?
是的 — 「逐文件转换策略」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 TypeScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 TypeScript Academy 课程共包含 4 节课。
「逐文件转换策略」这节课中我会学到什么?
逐步将 .js 重命名为 .ts,同时避免破坏任何功能 你通过在浏览器中直接运行的动手代码来练习 TypeScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 TypeScript Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 TypeScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「逐文件转换策略」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 TypeScript Academy 课中编写并运行代码吗?
能。每节 TypeScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。