-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinterfaces.ts
More file actions
42 lines (36 loc) · 1.14 KB
/
Copy pathinterfaces.ts
File metadata and controls
42 lines (36 loc) · 1.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import 'reflect-metadata';
import { container, inject, injectable } from 'tsyringe';
import { DB, IDB } from './helpers';
interface IManager {
GetRandomPersons(number: number);
}
interface IPersonsController {
Get2RandomPersons();
}
@injectable()
class Manager implements IManager {
constructor(@inject('IDB') private db: IDB) {}
public GetRandomPersons( number: number) {
const persons = [];
for (let i = 0; i < number; i++) {
const person = this.db.GetPersonFromDb(Math.floor(Math.random() * 9));
persons.push(person);
}
return persons;
}
}
@injectable()
class PersonsController implements IPersonsController {
constructor(@inject('IManager') private manager: IManager) {}
public Get2RandomPersons() {
const value = this.manager.GetRandomPersons(2);
return value;
}
}
container.register<IDB>('DB', { useClass: DB });
container.register<IManager>('Manager', { useClass: Manager });
container.register<IPersonsController>('IPersonsController', {
useClass: PersonsController,
});
const controller = container.resolve<IPersonsController>('IPersonsController');
console.log(controller.Get2RandomPersons());