ssube/noicejs

View on GitHub
docs/examples/08-fields.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { Container, Field, injectFields, InjectWithFields, Module } from 'noicejs';

class RandomModule extends Module {
  public async configure(options) {
    await super.configure(options);

    this.bind('foo').toFactory(() => Math.random());
    this.bind('bar').toInstance(3);
  }
}

@InjectWithFields()
class FooBar {
  @Field('foo')
  public foo: number;

  @Field('bar')
  public bar: number;

  constructor(options) {
    injectFields(this, options);
  }
}

async function main() {
  const container = Container.from(new RandomModule());
  await container.configure();

  const foobar = await container.create(FooBar);

  console.log(foobar.foo, foobar.bar);
  // prints: N, 3
}