abstract classes they can serve as injection tokens in nestjs while interfaces are purely typescript constructs and are wiped out during the transpilation process this means that they would not be available at runtime making classes a much better option to use