Skip to content

Concrete Dependency Injection (ARCH3199)

Key typescript.quality.concrete-dependency · Severity info · Category quality

Typing constructor dependencies as concrete classes violates the Dependency Inversion Principle (DIP); it couples the component to a specific implementation and makes mocking for tests harder.

class ReportService {
constructor(private repo: SqlOrderRepository) {}
}
interface OrderRepository {
findAll(): Promise<Order[]>;
}
class ReportService {
constructor(private repo: OrderRepository) {}
}

Type dependencies against interfaces or abstractions instead of concrete classes.