32

すでに既存の JavaScript システムがあります。

やりたいこと: 現在のシステムに TypeScript の統合を開始したいと考えています。すべてを TypeScript に移行することはできません。新しいモジュールのいくつかを TypeScript でゆっくりと書き始めたいと考えています。

試したこと: MODULE TypeScript コンストラクトと同様に、JS コードを編成するためのパターンを使用します。

TypeScript で単純なクラス/オブジェクトを書き直そうとしましたが、成功しましたが、コード内の他のファイルで定義された JS 関数にアクセスするのに問題がありました。

遭遇 した問題: ダミーのインターフェイスと、それらのインターフェイスを使用するダミーの関数などを作成する必要がありました。

質問: TypeScript を既存の JavaScript システムにゆっくりと統合するための最良のアプローチは何か、誰でもコメントできますか?

4

2 に答える 2

33

賢明な計画を立てているようですね。ここに私の観察があります!

TypeScript が JavaScript に依存していることを確認するのが最善であり、可能な場合はその逆ではありませ。これは、Visual Studio ツールを使用して TypeScript をリファクタリングするのは非常に簡単ですが、TypeScript を呼び出す JavaScript をリファクタリングしないためです。

TypeScript から呼び出す必要がある JavaScript の部分の定義ファイルを作成する必要があります。定義を記述するコストと、JavaScript を TypeScript に単純に変換するコストのバランスを取る必要があります。

1 つの関数のみを呼び出す場合は、その 1 つの関数の定義を記述します。必要になるまで定義を記述しないでください。これにより、古いコードを呼び出すコストを低く抑えることができます。

この型を一時的に使用しanyて、JavaScript コードで何かを呼び出すことを回避することもできます。ファイルを TypeScript に変換すると、型チェックが向上します。これは「場合による」決定ポイントです。定義を書くのに何年も費やすよりも、型チェックを犠牲にして時間を節約できます。

例えば...

declare var MyExistingClass: any;

電話できるようになりました...

var example = new MyExistingClass.Anything();
example.anythingYouLike();

これが受け入れられるかどうか、または定義を書きたいかどうかをチームとして決定する必要があります。

declare class MyExistingClass {
    anythingYouLike(): void;
}

これが役立つことを願っています。

于 2012-11-12T19:47:41.753 に答える
16

これは、約 100,000 行の JavaScript からなる HTML5 ゲーム エンジンを TypeScript に移行する際に最近直面した問題です。ファイルの名前を .js から .ts に変更することから始めて、そこから徐々に進める必要がありました。完全な説明は、興味のある人のためにここにあります:

http://hardcoded.blogspot.jp/2013/02/mostly-painfully-migrating-3d-game.html

于 2013-02-15T08:53:02.873 に答える