Vim Vixen では Clean Architecture 風の設計をしており、扱うモデルやレイヤー毎にクラスを作成します。 現在はクラス数が 100 を超えて、クラスにインスタンスをいちいち渡したり、インスタンスの作成と管理が面倒になってきました。 そこで Vim Vixen では Dependency Injection (DI)コンテナを導入することにしました。 いろいろ探してみると、すでに JavaScript/TypeScript 用の DI コンテナがいくつか存在するようです。 その中で(巨人の肩に乗るつもりで)Microsoft の「TSyringe」という軽量 DI コンテナを採用しました。 https://github.com/microsoft/tsyringe TSyringe はデコレーター(Java のアノテーションのようなもの)で DI するクラスを指定した