Value Objects
Step 1: Write Your Code
Section titled “Step 1: Write Your Code”interface IConfig { apiUrl: string;}
/** * @value */const config: IConfig = { apiUrl: 'https://api.example.com' };
interface IUserService { getUser(id: string): Promise<User>;}
/** * @value */const userService: IUserService = { getUser: (id: string) => Promise.resolve({ id, name: 'User' })};Step 2: Generate Container
Section titled “Step 2: Generate Container”npx @notjustcoders/ioc-arise generateStep 3: Generated Code
Section titled “Step 3: Generated Code”container.gen.d.ts:
export interface ContainerRegistry { 'IConfig': IConfig; 'IUserService': IUserService;}container.gen.ts:
import { Container } from '@notjustcoders/di-container';import type { ContainerRegistry } from './container.gen.d';import { config } from './config';import { userService } from './userService';
export const container = new Container<ContainerRegistry>();
container.register('IConfig', { useValue: config });container.register('IUserService', { useValue: userService });Step 4: Use It
Section titled “Step 4: Use It”import { container } from './container.gen';
const config = container.resolve('IConfig');const userService = container.resolve('IUserService');// ^? IUserService - Full type safety!