コンテンツにスキップ

TypeScript 7 で Go to Implementation のメモリ使用量が改善

公開日: 2026年7月30日

Microsoft は、TypeScript のネイティブ言語サービスにおける Go to Implementation のメモリ使用量増加を抑える修正をマージしました。

変更点

言語サービスは、幅優先のワークリストを使用して実装を検索します。多数の実装を持つインターフェイスメンバーでは、プログラム全体に対する検索を繰り返すと、同じ参照が再び返されることがありました。そのため、保持される参照、キューに入れられた処理、結果グループが二次関数的に増加し、大規模で型が深くネストしたプロジェクトではメモリを使い果たす可能性がありました。

この修正では、参照ノードを作業キューに追加する前に重複を除去し、重複したシンボル定義を保持しないようにしています。回帰テストでは、実装数を2倍にしたとき、二次関数的ではなく、おおむね線形に増加することを確認します。

重要である理由

Go to Implementation は、同じ内部参照を繰り返し保持することなく、このパターンを処理できるようになりました。エディタに最終的に返される応答では以前から重複が除去されていたため、この変更は、その応答を生成するために内部で必要となるメモリと処理を対象としています。

利用可能性

この変更は、TypeScript 7.0 のリリース後に TypeScript のネイティブコードベースへマージされました。修正を含む安定版の npm バージョンは出典に記載されていないため、利用する前に、インストール済みバージョンのリリースノートを確認してください。

出典

公式の変更内容: Fix O(K^2) OOM issue in go-to-implementation