Simple Modules Example
Project Structure
Section titled “Project Structure”simple-modules/├── user/│ ├── User.ts│ ├── IUserRepository.ts│ ├── UserRepository.ts│ ├── IUserService.ts│ └── UserService.ts├── todo/│ ├── Todo.ts│ ├── ITodoRepository.ts│ ├── TodoRepository.ts│ ├── ITodoService.ts│ └── TodoService.ts├── ioc.config.json├── container.gen.ts└── demo.ts
Module Configuration
Section titled “Module Configuration”{ "source": ".", "output": "container.gen.ts", "exclude": ["**/*.test.ts", "**/*.spec.ts"], "verbose": true, "modules": { "UserModule": ["user/**"], "TodoModule": ["todo/**"] }}
Cross-Module Dependencies
Section titled “Cross-Module Dependencies”export class TodoService implements ITodoService { constructor( private todoRepository: ITodoRepository, private userRepository: IUserRepository ) {}
async createTodo(title: string, userId: string): Promise<Todo> { const user = await this.userRepository.findById(userId); if (!user) { throw new Error('User not found'); }
return await this.todoRepository.create(title, userId); }}
import { container } from './container.gen';
const userService = container.userModule.UserService;const user = await userService.createUser('John Doe', 'john@example.com');
const todoService = container.todoModule.TodoService;const todo = await todoService.createTodo('Learn modules', user.id);