逐步从ES5迁移到TS



我正在运行一个巨大的项目,其中有成千上万的.js文件是用es5编写的,由于TS的许多原因和好处,我们决定开始迁移到TS,经过几天和许多研究,我将详细说明几点:

要开始从es5迁移到ts,我们可以通过两种方式开始:

第一方式:

1-安装ts,创建tsconfig,并将allowJS设置为true,然后开始将文件扩展名更改为.ts,默认情况下一切都会正常工作

2-由于我们希望逐步迁移,我们不希望立即将全局脚本替换为本机模块,换句话说,我们不希望立即输入importexport,而是希望保留旧的global scripts方式,并使用/// <reference path="">来加载依赖

3-在上一步之后,我们可以逐渐开始将文件转换为本地模块esm

第二种方式:

1-正如我读到的UMD它将在浏览器(客户端)和服务器上工作,这意味着支持所有类型的模块AMD, CommonJS, SystemJS and Native ES modules

2-在以UMD的方式重写脚本后,我们可以逐渐开始将脚本移动到ESM

最后但并非最不重要,关于智能,我们将相应地开始编写.d.ts文件,或者我们可以依赖ts-loader来生成文件

最后,我们要么选择ts-loader,要么选择babel,但我们不确定它们是否都有一些限制

对于开始迁移的最佳方式有任何想法都非常感谢

也许这个工具可以帮助你:https://github.com/airbnb/ts-migrate

ts-migrate是一个帮助将代码迁移到TypeScript的工具。它接受一个JavaScript或部分TypeScript项目,输出一个正在编译的TypeScript项目。ts-migrate旨在加速TypeScript迁移过程。生成的代码将通过构建,但需要后续操作来提高类型安全性。

如果可能的话,重新开始并编写复制/粘贴代码任务的迁移脚本。其中项目设置将在编译/构建/运行/lint方面无错误。所以即使在未来,也不会有任何问题,你只需要添加模块。你可以一个模块一个模块地迁移。

现在如果你迁移到TS意味着不仅仅是扩展或包类型,因为它不会有更多的好处,你需要改变代码,如类型,接口,配置等。

所以开始一个新的项目,然后将代码转换为TS,然后逐渐移动应该更好。

我建议你应该用typescript编写新的模块,并慢慢地将现有的文件和模块转换为typescript。但是只保留js格式的输出。将每个ts文件转换为js,例如,如果你有一个模块Utils,在这个ts和js中创建两个文件夹。编写一个构建脚本,将ts转换为js并移动到js文件夹中。通过这种方式,您可以将所有文件转换为ts。对于导入/导出,您可以为新模块启动它。我在一个项目中也做过同样的事情。

问候,尾身茂

我欣赏所有的答案,但对于我的情况,它是如此复杂,因为ts模块会影响scope,我发现有用的是使用所谓的shimmer moduleswebpack允许一个叫做imports-loader的功能,我可以用它来操纵js的范围,因此没有什么是打破的,然后我可以逐个文件移动文件开始迁移

最新更新