typescript - Inversify Taggade vs Namngivna bindningar med autoBindInjectable


Jag har försökt att förstå skillnaden mellan Inversify @tagged och @named bindings. Jag verkar inte kunna hitta någon dokumentation som definierar skillnaden mellan de två. De verkar ganska synonyma.

Dessutom, när jag använder Container:s autoBindInjectable-inställning, är jag ännu mer förvirrad över hur/var man definierar ett objekts tagg eller namn. Det verkar inte finnas något sätt med @injectable()-annoteringen. Vad används som identifierare när objektet binds? Används klassen som identifierare?

Jag såg att biblioteket inversify-binding-decorators lägger till dekoratorerna @provide() och @fluentProvide().whenTargetTagged(), men betyder det då att behovet av dekoratorn @injectable() helt försvinner?

Dokumenten visar:

let container = new Container({ autoBindInjectable: true });
container.isBound(Ninja);          // returns false
container.get(Ninja);              // returns a Ninja
container.isBound(Ninja);          // returns true

Men det visar/anger inte hur man använder @injectable()-annoteringen för att tillåta automatisk bindning, annat än de generella dokumenten:

@injectable()
class Ninja implements Warrior {}

Men hur definierar man då @tagged eller @named bindings? Och finns det en anledning att välja @tagged framför @named? Eller är det enda sättet att använda inversify-binding-decorators-biblioteket?

Relaterade artiklar