0Pricing
TypeScript Academy · 课时

逐文件转换策略

逐步将 .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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 开始迁移:allowJs 与 checkJs
  2. JSDoc 类型注解:过渡方案
  3. 逐文件转换策略
  4. 处理无类型的第三方库
← 返回 TypeScript Academy