如何在现有JavaScript系统中慢慢移动/迁移到TypeScript

Gre*_*icz 31 typescript

我们已经有了一个JavaScript系统.

我们想做什么: 我们想开始将TypeScript集成到当前系统中; 我们不能只将一切都移到TypeScript上.我们想慢慢开始在TypeScript中编写一些新模块.

我们尝试过: 我们使用一种模式将我们的JS代码simillar组织到MODULE TypeScript构造中.

我们尝试在TypeScript中重写一个简单的类/对象并且成功但我们无法访问在我们的代码中定义的JS函数,在其他文件中.

遇到的问题: 我们必须使用这些接口等创建虚拟接口和虚拟函数.

所以问题是:任何人都可以评论,将TypeScript慢慢集成到现有JavaScript系统中的最佳方法是什么.

Fen*_*ton 33

听起来你有一个明智的计划.这是我的观察!

这是最好的,以确保您的打字稿取决于你的JavaScript,而不是周围的其他方式在可能的情况.这是因为使用Visual Studio工具很容易重构TypeScript,但它不会重构调用TypeScript的JavaScript.

您必须为需要从TypeScript调用的JavaScript部分编写定义文件.您需要平衡编写定义的成本与将JavaScript简单地转换为TypeScript的成本.

如果您只调用一个函数,只需编写该函数的定义 - 在您需要之前不要编写定义.这样可以降低调用旧代码的成本.

您也可以暂时使用该any类型来调用JavaScript代码上的任何内容.将文件转换为TypeScript时,您将获得更好的类型检查.这是一个"它取决于"的决定点.与其花费多年时间编写定义,您可以节省时间,但需要以类型检查为代价.

例如...

declare var MyExistingClass: any;
Run Code Online (Sandbox Code Playgroud)

你现在可以打电话......

var example = new MyExistingClass.Anything();
example.anythingYouLike();
Run Code Online (Sandbox Code Playgroud)

您必须作为一个团队决定这是否可接受,或者您是否要编写定义:

declare class MyExistingClass {
    anythingYouLike(): void;
}
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.


小智 16

这是我们最近面临的将大约100,000行JavaScript的HTML5游戏引擎移植到TypeScript的问题.我们必须分阶段完成,首先将文件从.js重命名为.ts并逐步从那里开始.对于任何感兴趣的人,这里都有完整的描述:

http://hardcodeded.blogspot.jp/2013/02/mostly-painlessly-migrating-3d-game.html