Интерфейс
Основной принцип TypeScript для проверки типов. Интерфейс в TypeScript — это контракт в проекте или вне проекта.
interface TestInterface {
name: string;
}
function test(testInterface: TestInterface){
console.log(testInterface.name);
}
Класс
Интерфейс — это контракт, а класс — реализация. Это может быть реализация интерфейса. Также это может быть самостоятельная реализация.
(Еще одно важное замечание: в ECMAScript 6 уже введен класс. Класс доступен в JavaScript.)
class Student {
name: string;
constructor(name: string){
this.name = name;
}
getName(): string{
return this.name;
}
setName(name: string){
this.name = name;
}
}
Сборник
Компиляция выполняется TypeScript Cli.
Интерфейс

function test(testInterface) {
console.log(testInterface.name);
}
Судя по результату компиляции, код интерфейса не соответствует какому-либо коду JavaScript. Можно сделать вывод, что интерфейс используется для проверки типов в проекте TypeScript.
Класс

var Student = /** @class */ (function () { function Student(name) { this.name = name; } Student.prototype.getName = function () { return name; }; Student.prototype.setName = function (name) { this.name = name; }; return Student; }());
Из результата компиляции код класса преобразуется в функцию JavaScript и реализацию прототипа.