Node.js+TypeScriptでバックエンドを書いてると、DIパターンを使いたい場面が結構ある。 いわゆるDIと言うとコンストラクタインジェクションなどクラスありきの方法が思い浮かぶけれども、実際には関数でもDIパターンを書くことができる。単純に関数のパラメータに依存を受け取ればよい。 // 依存を表現する型 interface Deps { appService: AppServiceInterface; } // DIパターンを記述する関数 function DoSomething({appService}: Deps, params: any) { ... } 依存を注入する場合には、引数を部分適用するbind()メソッドを使う。 // 依存を注入 const doSomething = DoSomething.bind(null, { appService: new MyAp
![TypeScriptの関数でDIパターン - id:anatooのブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/8f5c121283c23c2aafc43553768e8072a3e63b1d/height=288;version=1;width=512/https%3A%2F%2Fblog.anatoo.jp%2Fogp-images%2F2020-05-14.png)