injectd
TypeScript icon, indicating that this package has built-in type declarations

0.1.2 • Public • Published

injectd 0.1 Build status

This library is the leanest dependency injection implementation you can possibly have for JavaScript (ES2016) and TypeScript. Just ~1kb filesize (uncompressed)

The API consists in three methods: inject, register and resolve.

  • register<T>(idOrInstance: string | any, instance?: any): void: Register instance with given identifier. The instance registered will be available for inject and resolve methods.
  • inject(id: any): A decorator to inject a previously registered instance into target class property. (see usage below)
  • resolve<T>(id: any): T: Get previously registered instance by given name or type. (used under the hood by inject method)

Configuration

Your compiler/transpiler need to understand the decorator syntax in order to be able to use injectd. Here's how you enable it using:

Usage

// application.ts
import { register } from "injectd"
 
export class Application {
  constructor () {
    register(this);
  }
}
 
// screen.ts
import { Application } from "./application"
import { inject } from "injectd"
 
export class Screen {
  @inject(Application)
  app: Application;
}
 
// main.ts
let myApp = new Application();
 
// anywhere.ts
import { Screen } from "./screen"
 
let screen = new Screen();
screen.app // your "Application" instance is here!

License

MIT

Package Sidebar

Install

npm i injectd

Weekly Downloads

16

Version

0.1.2

License

MIT

Last publish

Collaborators

  • endel