1.0.0 • Published 4 years ago

ts-di-container v1.0.0

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

Super simple DI framework and IoC with containers

npm install ts-di-container --save

Usage example

    import { Container, injectable, dep } from 'simple-di-container';

    const container = new Container();
    container.use(TestClass);
    container.use(SomeOtherClass);

    const subject = container.get<TestClass>(TestClass);
    subject.some.printf(); // 'SOME OTHER CLASS INSTANCE'

    // Classes

    @injectable
    class SomeOtherClass {
      constructor() {}

      printf(): string {
        return 'SOME OTHER CLASS INSTANCE';
      }
    }

    @injectable
    class TestClass {
      constructor(@dep() public some: SomeOtherClass) {}
    }

Usage example with an alias interface for dependency inversion.

    import { Container, injectable, dep } from 'simple-di-container';

    const container = new Container();
    container.use(TestClass);
    container.use(Foo, 'FOO_BAR');
    container.use(Bar, 'FOO_BAR');

    // "FOO_BAR" is an alias for whatever injection you will use
    // Your dependencies will inherit last added "FOO_BAR" reference, in this case "Bar"

    const subject = container.get<TestClass>(TestClass);
    subject.some.printf(); // 'BAR CLASS INTERFACE'

    // Classes

    interface AliasInterface {
      printf(): string;
    }

    @injectable
    class Foo implements AliasInterface {
      constructor() {}

      printf(): string {
        return 'FOO CLASS INSTANCE';
      }
    }

    @injectable
    class Bar implements AliasInterface {
      constructor() {}

      printf(): string {
        return 'BAR CLASS INSTANCE';
      }
    }

    @injectable
    class TestClass {
      constructor(@dep('FOO_BAR') public some: AliasInterface) {}
    }