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
с