Как я могу использовать контейнер IOC с универсальными машинописными текстами в узле? - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь использовать container-ioc , но я рад использовать любой пакет, поставляющий IoC.Я не могу найти никаких примеров, которые используют дженерики машинописи.По сути, я хочу:

interface A<T> {
    foo();
}

class A<T> {
    foo() {
    }
}

interface B<T> {
    bar: A<T>;
}

class B<T> {
    bar: A<T>;
    constructor(param: A<T>) {
       this.bar = param;
    }
}

, где я могу настроить контейнер IoC для внедрения A в B. Я использую машинопись в приложении узла.У меня есть синтаксис, который, кажется, по крайней мере анализирует, но не может создать контейнер resol (), так как я не знаю, как передать универсальный параметр.Не говоря уже о том, что я не уверен, поддерживается ли это на самом деле.

1 Ответ

0 голосов
/ 06 декабря 2018

Итак, у меня есть обходной путь, который подходит для моей ситуации.Во-первых, я установил символ для универсального типа с помощью const MyFoo = Symbol("Foo<My>").Затем я использую конструктор фабрики при регистрации типа:

container.register([    
    { token: MyBar, useFactory: () => new Bar<My>() },
      token: MyFoo, useFactory: () => new Foo<My>( container.resolve(MyBar) )}]);

Наконец, я не вводю параметр @ в конструктор.Этот метод означает, что мне нужно заранее знать, какие универсальные типы я буду использовать.В моем случае я делаю так: мои универсальные типы реализуют репозиторий сущностей и связанные с ним классы, а мои сущности являются универсальными параметрами.Я бы предпочел, чтобы при настройке новых сущностей не было другого места для обслуживания, поэтому я оставляю этот ответ неприемлемым, если у кого-то есть лучшее решение.

...