ts-di-container

1.0.0 • Public • Published

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) {}
    }

Readme

Keywords

none

Package Sidebar

Install

npm i ts-di-container

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

15.5 kB

Total Files

11

Last publish

Collaborators

  • eliasdarruda