0

大規模な Typescript プロジェクトがあり、開発時間を支配することがある増分コンパイル時間を改善しようとしています。多くのファイルでは、すべてのimportステートメントに従うと、プロジェクトのほとんどのファイルに到達するため、インクリメンタル コンパイルは非常に遅くなる可能性があります。このグラフの接続を減らす作業を行っていますが、Typescript ファイルに加えたいくつかの変更について、インポートファイルが --incremental または watch モードで再コンパイルされないことにも気付きました。

たとえば、クラスのメソッド本体 (シグネチャは変更しない) を変更しても、そのクラスをインポートするファイルの再コンパイルは発生しません。さらに、(ソフトおよびハード)プライベートフィールドをクラスまたはファイル ローカル宣言に追加しても、インポーターの再コンパイルは発生しないようです。

ただし、mixin パターン ( https://www.typescriptlang.org/docs/handbook/mixins.html ) を使用する場合、mixin クラスを変更すると、ハード プライベート フィールドが追加されても、すべてのインポーターが再コンパイルされることに気付きました。インポート/エクスポート タイプを使用しても、依存関係に関して何の違いもないように思われますが、関連するドキュメントは見つかりませんでした。

インクリメンタル コンパイルの目的で依存関係を構成するものの正式なドキュメントはありますか? この依存関係グラフはコンパイラ (またはインクリメンタル コンパイルの出力) から取得できますか? より実際には、プライベート フィールドとメソッドの実装にコンパイルの依存関係を作成せずにミックスインを使用する方法はありますか? 関連するすべてのクラスにインターフェースを導入することによってのみこれを解決できましたが、これは非常に面倒であり、独自の問題を引き起こします。プロジェクトをサブプロジェクトに分割してプロジェクト参照を使用することはできないようです。そのような分割では循環依存関係が発生するためです。

strictNull チェックの目的で、推奨されるようにそれらをコードに徐々に導入しようとしていますが、チェックされたファイルのリストに 1 つのファイルを追加すると、推移的にインポートするすべてのファイルも追加されます (またはそう思われます)。ここで使用されている依存関係の正式なドキュメントはありますか? インクリメンタルコンパイル用のものと同じですか?

4

0 に答える 0