Open3

TypeScriptの循環参照をやつける方法を考えてみる

xpadevxpadev

CommonJSでrequireする

もしCommonJSで開発をしているのであればrequireを使うことでどこでも動的にほかファイルをimportすることができる
requireが実行されるまで参照が発生しないため、循環参照は起きない

xpadevxpadev

ESModuleでasync importする

ESModuleでもCommonJSのように実行途中にほかファイルを読み込むことができる
しかし、非同期関数のためライブラリなどで採用するのは難しい

xpadevxpadev

循環参照を引き起こすexportを関数呼び出しの際に引数として渡す

exportの代わりに関数の引数で渡してしまえば循環参照は発生しなくなる
ただ、参照が10個くらいつながっている場合は引数の取り扱いが地獄になる