AM
Size: a a a
AM
NM
AM
AM
AM
NM
AV
cats-repository.ts:
export class CatsRepository extends AbstractCatsRepository {
constructor(connection: AbstractConnection) {}
}
app.module.ts:
@Module({
providers: [
CatsRepository,
{
provide: AbstractConnection,
useValue: ConcreteConnection,
}
],
})
export class AppModule {}
@Injectable`) нету смысла заморачиваться с abstract classAM
AM
@Injectable`) нету смысла заморачиваться с abstract classAM
AV
@Injectable`) - не крутоAV
providers: [CatsRepository],
AM
AV
cats-service.ts:
export class CatsService {
constructor(repository: ICatsRepository) {}
}
app.module.ts:
@Module({
providers: [
{ provide: ‘ICatsRepository’, useFactory: () => new CatsRepository() },
{
provide: ‘CatsService’,
useFactory: (repository: ICatsRepository) => new CatsService(repository),
inject: [‘ICatsRepository’],
}
],
})
export class AppModule {}
new T() (но только в конфигурации DI !)Symbol ) :{ provide: CatsRepository, useFactory: () => new CatsRepository() },AV
с
с
AM
с