InScriptifyjs TypeScript создать общую привязку к Constructor? - PullRequest
0 голосов
/ 17 октября 2019

Мне нужно создать новые экземпляры без использования самого контейнера. Я использую InversifyJS DI контейнер.

Видя это единственное решение: https://github.com/inversify/InversifyJS/issues/520#issuecomment-291024966

Вы можете создать фабрику и использовать ее в качестве службы ввода для создания экземпляров.

Но мой случай немного сложнее, у меня есть abstract , называемый BaseState, и около 5 состояний, которые реализуют BaseState.

Так что, если я преобразую его решение вмой код в привязках это будет:

bind<{new(): BaseState}>("InitialStateConstructor").toConstructor(InitialValidationState);
bind<{new(): BaseState}>("CreateStorybookStateConstructor").toConstructor(CreateStorybookState);
bind<{new(): BaseState}>("CreateThumbnailStateConstructor").toConstructor(CreateThumbnailState);
bind<{new(): BaseState}>("MergeTempVideoSessionFilesStateConstructor").toConstructor(MergeTempVideoSessionFilesState);
bind<{new(): BaseState}>("StoreAndUploadDataStateConstructor").toConstructor(StoreAndUploadDataState);

Но, как вы видите, этот способ означает, что мне нужно создать отдельную функцию на своей фабрике для каждого состояния.

Есть ли способсделать одну общую привязку, которая связывает все, что связано с BaseState, и на моем заводе сделать функцию получения параметра, которая является типом состояния, и построить экземпляр состояния на основе данного типа?

...