3.0.0-alpha.14 • Published 5 years ago

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

Weekly downloads
30
License
MIT
Repository
github
Last release
5 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

5 years ago

3.0.0-alpha.13

5 years ago

3.0.0-alpha.11

5 years ago

3.0.0-alpha.3

5 years ago

3.0.0-alpha.1

5 years ago

2.0.9

5 years ago

2.0.8

5 years ago

2.0.5

5 years ago

2.0.3

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.8.1

5 years ago

1.8.0

5 years ago

1.7.0

5 years ago

1.6.0

5 years ago

1.5.0

5 years ago

1.4.0

5 years ago

1.3.0

5 years ago

1.2.0

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago