Skip to content

Value Objects

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' })
};
Terminal window
npx @notjustcoders/ioc-arise generate

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 });
import { container } from './container.gen';
const config = container.resolve('IConfig');
const userService = container.resolve('IUserService');
// ^? IUserService - Full type safety!