1.6.4 • Published 5 months ago
inject.min v1.6.4
inject.min
disclaimer
super easy and super small dependency injection - all that you need
- no need to register
- can override
- can use inject
- can use decorators
example without decorators
import { DIContainer } from 'inject.min';
class Original {
name = 'original';
}
class Override extends Original {
name = 'override';
}
class TestOverride {
constructor() {
DIContainer.bind(Original, Override);
const Class = DIContainer.getClass(Original);
const instance = DIContainer.get(Original);
console.log(instance.name); // 'override'
console.log(Class === Override); // true
}
}
new TestOverride();
to use decorators (optional)
modify your tsconfig.json
{
"compilerOptions": {
"experimentalDecorators": true
}
}
example using decorators
import { Inject } from 'inject.min';
class Example {
value: string;
constructor(props?: { param: string }) {
this.value = props?.param || 'example';
}
}
class Example2 extends Example {
constructor(param: string) {
super({ param });
}
}
class Test {
@Inject(Example) example: Example;
@Inject(Example2, 'example2') example2: Example2;
@Inject(Example, { param: 'example3' }) example3: Example;
constructor() {
console.log(this.example.value); // example
console.log(this.example2.value); // example2
console.log(this.example3.value); // example3
}
}
class Test2 {
@Inject(Example) example: Example;
@Inject(Example2, 'different') example2: Example2;
@Inject(Example, { param: 'example3' }) example3: Example;
constructor() {
console.log(this.example.value); // example
console.log(this.example2.value); // different
console.log(this.example3.value); // example3
}
}
class Test3 extends Test {}
const test = new Test(); // example, example2, example3
const test2 = new Test2(); // example, different, example3
const test3 = new Test3(); // example, example2, example3
console.log(test.example === test2.example); // true
console.log(test.example2 === test2.example2); // false
console.log(test.example2 === test3.example2); // true
api
install
npm i inject.min --save
license
MIT
1.2.0
7 months ago
1.1.0
7 months ago
1.6.4
5 months ago
1.6.3
5 months ago
1.6.2
5 months ago
1.6.1
5 months ago
1.6.0
5 months ago
1.5.0
5 months ago
1.4.0
5 months ago
1.3.1
7 months ago
1.3.0
7 months ago
1.0.11
9 months ago
1.0.10
9 months ago
1.0.9
9 months ago
1.0.8
9 months ago
1.0.7
9 months ago
1.0.6
9 months ago
1.0.5
9 months ago
1.0.4
9 months ago
1.0.3
9 months ago
1.0.2
9 months ago
1.0.1
9 months ago
1.0.0
9 months ago