If you just need to declare a custom type then use interfaces. IMO, there is a very pragmatic reason - they don't get transpiled into JavaScript so the generated code is shorter.
Interfaces won't work if you need to instantiate objects with constructors or use a framework that instantiates and inject them. Then use classes or abstract classes.