Skip to main content
Version: 2.x

lazy() function

@microsoft/fast-element/di.js > lazy

lazy() function

A decorator that lazily injects a dependency depending on whether the Key is present at the time of function call.

Signature:

lazy: (key: any) => any

Parameters

Parameter

Type

Description

key

any

The key to lazily resolve. see on interactions with interfaces

Returns:

any

Example 1

You need to make your argument a function that returns the type, for example

class Foo {
constructor( @lazy('random') public random: () => number )
}
const foo = container.get(Foo); // instanceof Foo
foo.random(); // throws

would throw an exception because you haven't registered 'random' before calling the method.

Example 2

This, would give you a new 'Math.random()' number each time.

class Foo {
constructor( @lazy('random') public random: () => random )
}
container.register(Registration.callback('random', Math.random ));
container.get(Foo).random(); // some random number
container.get(Foo).random(); // another random number

@lazy does not manage the lifecycle of the underlying key. If you want a singleton, you have to register as a singleton, transient would also behave as you would expect, providing you a new instance each time.