multiple
decorates factories to allow multiple instantiation.
Import
import { multiple } from 'true-di';
const { multiple } = require('true-di');
Declaration (3 overloadings)
<IContainer, name extends keyof IContainer>(
factory: IFactory<IContainer, name>
): IFactoryTuple<IContainer, name>
<IContainer, name extends keyof IContainer>(
[factory, initilizer]: IFactoryTuple<IContainer, name>,
): <IContainer, name>
<IContainer>(factories: IFactories<IContainer>): IFactories<IContainer>
Arguments (1st overloading)
factory:
IFactory<IContainer, Name>
- factory to be decorated to generate multiple instances.
Arguments (2nd overloading)
factoryTuple:
IFactoryTuple<IContainer, Name>
- factory tuple to be decorated to generate multiple instances.
Returns
IFactoryTuple<IContainer, Name>
- factory tuple (factory and initializer) that allows to create multiple instances
Arguments (3rd overloading)
factories:
IFactories<IContainer>
- factories object to decorate all factories inside of it.
Returns
IFactories<IContainer>
- factories object with decorated factories (or factory tuples)
Example
import diContainer, { multiple } from 'true-di';
type Node = {
title: string,
}
type IContainer = {
index: number,
node: Node,
}
let counter = 0;
const container = diContainer<IContainer>({
index: multiple(() => ++counter),
node: multiple(({ index }) => ({ title: `Item #${index}` })),
});
const nodes = [
container.node,
container.node,
container.node,
];
// nodes is an array:
// [
// { title: 'Item #1' },
// { title: 'Item #2' },
// { title: 'Item #3' }
// ]
The same effect could be reached by decorating whole factories object
const container = diContainer(multiple<IContainer>({
index: () => ++counter,
node: ({ index }) => ({ title: `Item #${index}` }),
}));
Last updated
Was this helpful?