任何允许注入所有实现服务集合的 JS/TS IoC 容器?

Any JS/TS IoC containers that allow injecting a collection of all implementing services?

我有 .NET 背景,使用 Autofac,我发现隐式关系类型非常有用。来自 Autofac 的文档:

For example, when Autofac is injecting a constructor parameter of type IEnumerable<ITask> [(a collection of ITask)] it will not look for a component that supplies IEnumerable.

Instead, the container will find all implementations of ITask and inject all of them.

Javascript世界里有没有类似的东西,还是我运气不好?

UPD 2022-04-11:我理解无法通过“类型”解析的事实,因为没有类型;然而,JS 中的 IOC 容器通过使用“标记”(符号、字符串等)来解决类型缺失的问题

所以我正在寻找的是 IoC 容器,它允许在同一个令牌下注册多个提供商,然后通过令牌解析它们的数组。

C# 是一种静态类型语言,这意味着类型被视为第一个 class 成员。您可以在运行时轻松引用变量的类型。 TypeScript 基于 JavaScript,它没有类型的概念。在运行时,所有类型都从代码中删除,这意味着任何代码都无法引用该类型。不幸的是你是 SOL。

我使用 InversifyJS 进行依赖注入,它是 JS/TS AFAIK 中功能最全的 DI 包,你可以查看文档看看它是否可以做类似的事情(虽然我怀疑它).

编辑:Inversify 有一个 multi-inject 选项可以满足您的需要。

InversifyJS 似乎支持我通过 container.getAll() 寻找的东西。

https://doc.inversify.cloud/en/container_api.html