Suppose I have a pure abstract class (that is, an abstract class without any implementation):
abstract class A {
abstract m(): void;
}
I was led here because I had just been asking myself the same question and while reading the answers it ocurred to me that the choice will also affect the instanceof operator.
Since an abstract class is an actual value that gets emitted to JS it can be used for runtime checks when a subclass extends it.
abstract class A {}
class B extends A {}
class C implements A {}
console.log(new B() instanceof A) // true
console.log(new C() instanceof A) // false