本章概述了将代码库从 JavaScript 迁移到 TypeScript 的策略。它还提到了供进一步阅读的资料。
以下是迁移到 TypeScript 的三种策略
我们可以为代码库支持 JavaScript 和 TypeScript 文件的混合。我们从仅使用 JavaScript 文件开始,然后将越来越多的文件切换到 TypeScript。
我们可以保留当前的(非 TypeScript)构建过程和仅限 JavaScript 的代码库。我们通过 JSDoc 注释添加静态类型信息,并将 TypeScript 用作类型检查器(而不是编译器)。一旦所有内容都正确键入,我们就切换到 TypeScript 进行构建。
对于大型项目,迁移期间可能会出现太多 TypeScript 错误。然后快照测试可以帮助我们找到已修复的错误和新错误。
更多信息
如果我们使用编译器选项 --allowJs
,TypeScript 编译器支持 JavaScript 和 TypeScript 文件的混合
首先,只有 JavaScript 文件。然后,我们逐个将文件切换到 TypeScript。在我们这样做的同时,我们的代码库会持续编译。
tsconfig.json
的外观如下
{
"compilerOptions": {
···
"allowJs": true
}
}
更多信息
此方法的工作原理如下
--noEmit
)。除了编译器选项 --allowJs
(用于允许和复制 JavaScript 文件)之外,我们还必须使用编译器选项 --checkJs
(用于类型检查 JavaScript 文件)。.js
文件切换到 .ts
文件现在并不紧急,因为整个代码库已经是完全静态类型的。我们现在甚至可以生成类型文件(文件扩展名 .d.ts
)。这就是我们如何通过 JSDoc 注释为纯 JavaScript 指定静态类型
/**
* @param {number} x - The first operand
* @param {number} y - The second operand
* @returns {number} The sum of both operands
*/
function add(x, y) {
+ y;
return x }
/** @typedef {{ prop1: string, prop2: string, prop3?: number }} SpecialType */
/** @typedef {(data: string, index?: number) => boolean} Predicate */
更多信息
在大型 JavaScript 项目中,切换到 TypeScript 可能会产生太多错误——无论我们选择哪种方法。然后对 TypeScript 错误进行快照测试可能是一种选择
更多信息
我们快速了解了迁移到 TypeScript 的策略。还有两个技巧