в TypeScript (я могу ошибаться, если так — поправльте) разницы особой нет. В классах могут добавляться еще функции, а интерфейс — это аналог структур в C++). Ещ возможен подход, который используется в Java или том же PHP, когда интрефейс — это "нулевой уровень абстракции", эдакое неявное условие, к которому могут подойти классы любой реализации, не имеющие родственной связи с, допустим, абстрактными классами-полуфабрикатами какой-то классовой библиотеки. А сдругой стороны — они это гарантия унификации отдельных частей.