3.0.0-alpha.14 • Published 6 years ago

@ts-kit/di v3.0.0-alpha.14

Weekly downloads
30
License
MIT
Repository
github
Last release
6 years ago

Di

Dependency Injection in ~800 bytes

Installation:

npm i @ts-kit/di

Example:

import { Injector, Inject } from '@ts-kit/di';

// Write a plain ol JS class
class FooService {
  sayHello() {
    return 'Hello From FooService';
  }
}

// Declare that class as a static dependency of another class
class BarService {
  // an instance of that class will be passed to this one;
  constructor(
    @Inject(FooService) private foo: FooService
  ) {}

  sayHello() {
    return 'Hello From BarService and ' + this.foo.sayHello();
  }
}

// create a new instance of our injector
const app = new Injector();

// Use that injector to create new instances of objects
app.get(BarService).sayHello(); // Hello from BarService and Hello from FooService

Override A Service:

import { Injector, Inject } from '@ts-kit/di';

class FooService {
  sayHello() {
    return 'Hello From FooService';
  }
}

class BarService {
  constructor(
    @Inject(FooService) private foo: FooService
  ) {}

  sayHello() {
    return 'Hello From BarService and ' + this.foo.sayHello();
  }
}

// Override FooService with an alternate implementation
const app = new Injector({
  providers: [
    { provide: FooService, useFactory: () => ({sayHello: () => 'IT HAS BEEN OVERRIDEN' } as FooService) }
  ]
});

app.get(BarService).sayHello(); // Hello from BarService and IT HAS BEEN OVERRIDEN

Inject services with custom decorators:

import { Injector, Inject } from '@ts-kit/di';

class FooService {
  sayHello() {
    return 'Hello From FooService';
  }
}

const Foo = () => (c: any, k: string, i: number) => Inject(FooService)(c, k, i);

class BarService {
  // Use custom decorator to provide FooService
  constructor(
    @Foo() private foo: FooService
  ) {}

  sayHello() {
    return 'Hello From BarService and ' + this.foo.sayHello();
  }
}

// create a new instance of our injector
const app = new Injector();

app.get(BarService).sayHello(); // Hello from BarService and Hello from FooService
3.0.0-alpha.14

6 years ago

3.0.0-alpha.13

6 years ago

3.0.0-alpha.11

6 years ago

3.0.0-alpha.3

6 years ago

3.0.0-alpha.1

6 years ago

2.0.9

6 years ago

2.0.8

6 years ago

2.0.5

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.8.1

6 years ago

1.8.0

6 years ago

1.7.0

6 years ago

1.6.0

6 years ago

1.5.0

6 years ago

1.4.0

6 years ago

1.3.0

6 years ago

1.2.0

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago