3.0.0-alpha.14 • Published 5 years ago
@ts-kit/di v3.0.0-alpha.14
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