Open3
TypeScriptの循環参照をやつける方法を考えてみる
CommonJSでrequireする
もしCommonJSで開発をしているのであればrequireを使うことでどこでも動的にほかファイルをimportすることができる
requireが実行されるまで参照が発生しないため、循環参照は起きない
ESModuleでasync importする
ESModuleでもCommonJSのように実行途中にほかファイルを読み込むことができる
しかし、非同期関数のためライブラリなどで採用するのは難しい
循環参照を引き起こすexportを関数呼び出しの際に引数として渡す
exportの代わりに関数の引数で渡してしまえば循環参照は発生しなくなる
ただ、参照が10個くらいつながっている場合は引数の取り扱いが地獄になる