Я изучаю DI с помощью Typescript (в примере я использую пакет tsyringe).
Как я могу указать контейнеру DI, который мне нужен:
- один новый экземпляр Bar для каждого экземпляра FooBar (поэтому нет синглтона) и
- Foo должен ссылаться на экземпляр Bar FooBar?
В приведенном ниже примере tsyringe создает два экземпляра Bar (один в Foo и один для FooBar).
it("injects one Bar instance", () => {
@injectable()
class Bar {
constructor() {}
x = 1;
}
@injectable()
class Foo {
constructor(public myBar: Bar) {}
}
@injectable()
class FooBar {
constructor(public bar: Bar, public foo: Foo) {}
}
const fooBar = container.resolve(FooBar);
fooBar.bar.x = 2;
expect(fooBar.foo.myBar).toBe(2); // throws error (is 1)
});