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?