Интерфейс

Основной принцип 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 и реализацию прототипа.