現在、typescript ファイルをパッケージ化するという概念はありますか?
純粋な JavaScript プロジェクトを TypeScript に移行しようとしているときに、現時点で苦労していることの 1 つは参照です。複雑なオブジェクトがある場合、さまざまな場所からファイルを取得するいくつかの参照ステートメントを作成する必要があります。
これの一部は、プロジェクトのレイアウトがかなり大きくモジュール化されているため、次のようなシステムがあります。
- modules
|- module1
|- models
|- services
|- controllers
|- module2
|- models
|- services
|- controllers
|- core
|- models
|- services
|- data
|- validation
他にもたくさんありますが、要点はわかります。現在、コアはすべてのモジュールで使用されていますが、javascript を使用すると、実行時にコアが読み込まれることを期待しています。これはまだ発生する必要があります。コンパイル時に、すべての typescript ファイルをいくつかの typescript ライブラリなどにパッケージ化するという概念があり、それを module1 モデルがコア モデルなどを参照するのではなく、プロジェクトから参照できるかどうか疑問に思っていました。
名前空間は正常に機能するため、現在、問題はディレクトリ構造を中心に展開していますが、ファイルを移動すると、移動したファイルを参照するすべてのファイルに移動して更新する必要があります。これは面倒ですが、何らかのパッケージのアイデアがある場合は、その出力を参照するだけでよいので、ファイル システムとディレクトリについて心配する必要がなくなり、パッケージと名前空間について心配するだけで済みます。
これの多くは C# の仕組みと非常に似ていると思います。参照を持つプロジェクトがあります。次に、そのプロジェクト内のすべてのファイルが参照内の任意のクラスを使用できるため、コードの公開は参照と名前空間によって管理されます。
ビルド スクリプトでローカルの references.ts ファイルを作成し、関連モジュール内のすべての *.ts ファイルをループして、それらを 1 つの大きなファイルに入れることを考えています。
///<reference path="core/models/some-model.ts"/>
///<reference path="core/models/some-model-2.ts"/>
///<reference path="core/services/some-service.ts"/>
上記のように、コアファイルを必要とするすべてのタイプスクリプトファイルでこの参照ファイルを使用すると、これは一種のプロジェクトレベルの参照として機能します。 ..
良い方法が既に存在する場合、この問題に対する独自の解決策を手で転がしたくありません。それが理にかなっていることを願っています...
==編集==
これをここに投稿したかったのは、私のシナリオが時間を大幅に節約し、参照ガフを 99% 削減したからです。ただし、ビルド スクリプトを持っていない人には当てはまりません。
今、ビルド スクリプトがあると仮定して、ルート レベル ディレクトリ (この場合は module1、module2 など) 内のすべてのファイルを通過するステップをスクリプトに含めるパスを取り、local.references を出力します。そのディレクトリ内の参照フォルダーに ts します。次に、必要に応じて外部記述子または他のモジュール参照を参照する external.references.ts を手動で作成しました。
タイプスクリプトをコンパイルするときにこの部分が完了した後、基本的にルートディレクトリを再びポイントし、それらすべて (* / .ts) を 1 つの大きな js ファイル (つまり、module1.js) にコンパイルするように指示します。これにはローカル参照と外部参照が自動的に含まれるため、個々のクラスに参照宣言を入れる必要はありません。
このようにして、ローカルおよび外部参照ファイル (local.reference.ts、external.reference.ts) をファイルの一括処理に含めることで、名前空間について心配するだけで済み、C# とほとんど同じように処理できます。操作します。
ただし、ローカル参照生成と typescript のコンパイルを実行できるビルド スクリプトがない場合は、指定されたコメント リンクが適切なオプションになります。