/container

Simple yet powerful implementation of the Inversion of Control (IoC) principle. IoC is also known as dependency injection (DI). based on TypeDI

Primary LanguageTypeScriptMIT LicenseMIT

@express.ts/container

Build Status npm version Dependency Status DevDependency Status Maintainability Coverage Status Join the chat at https://gitter.im/typestack/typedi

@express.ts/container is a dependency injection tool for JavaScript and TypeScript. It is a process whereby objects define their dependencies (that is, the other objects they work with) only through constructor arguments, arguments to a factory method, or properties that are set on the object instance after it is constructed or returned from a factory method. The container then injects those dependencies when it creates the bean. This process is fundamentally the inverse (hence the name, Inversion of Control) of the bean itself controlling the instantiation or location of its dependencies by using direct construction of classes or a mechanism such as the Service Locator pattern.

Using @express.ts/container you can build well-structured and easily tested applications.

Usage with JavaScript

Install the module:

npm install @express.ts/container --save

Now you can use @express.ts/container with JavaScript.

Usage with TypeScript

  1. Install module:

    npm install @express.ts/container --save

  2. Install reflect-metadata package:

    npm install reflect-metadata --save

    and import it somewhere in the global place of your app before any service declaration or import (for example in app.ts):

    import "reflect-metadata";

  3. You may need to install node typings:

    npm install @types/node --save-dev

  4. Enabled following settings in tsconfig.json:

"emitDecoratorMetadata": true,
"experimentalDecorators": true,

Now you can use @express.ts/container with TypeScript.

TypeScript Advanced Usage Examples

Samples

Take a look on samples in ./sample for examples of usage.