背景
私用メモ。公式のWikiにあったので。
やっていく
途中までは普通にClassに注入するときと同じようにTYPES
とコンテナを作る
let TYPES: {
something: "something",
somethingElse: "somethingElse"
};
export { TYPES };
let inversify = require("inversify");
import { TYPES } from "./constants/types";
// declare your container
let container = new inversify.Container();
container.bind(TYPES.something).toConstantValue(1);
container.bind(TYPES.somethingElse).toConstantValue(2);
export { container };
こんなようなbindDepindencies
ヘルパ関数を定義する。
import { container } from "./inversify.config"
function bindDependencies(func, dependencies) {
let injections = dependencies.map((dependency) => {
return container.get(dependency);
});
return func.bind(func, ...injections);
}
export { bindDependencies };
注入先の関数を定義し、さっきのbindDepondencies
の第一引数に関数を、第二引数にTYPES
を渡す。
import { bindDependencies } from "./utils/bindDependencies";
import { TYPES } from "./constants/types";
function testFunc(something, somethingElse) {
console.log(`Injected! ${something}`);
console.log(`Injected! ${somethingElse}`);
}
testFunc = bindDependencies(testFunc, [TYPES.something, TYPES.somethingElse]);
export { testFunc };
使う。
import { testFunc } from "./x/test_func";
testFunc();
// > Injected! 1
// > Injected! 2