Классы против интерфейсов в TypeScript - когда использовать, преимущества и недостатки
Классы
В TypeScript можно использовать классы для создании пользовательских типов данных. Например, так:
Однако, это не совсем правильный пример.
Преимуществом при использовании класса является тот факт, что можно создавать экземпляры этого класса:
Еще одно преимущество использования класса в TypeScript - возможность использования оператора instanceof:
… в этом случае условие выполнится и проверка сработает, так как person является экземпляром класса Person.
Недостаток использования класса в TypeScript - при транспиляции в JavaScript в результирующем коде останется этот класс - или ввиде функции (ES5):
… или ввиде класса (ES6):
Интерфейсы
Главное преимущество использования интерфейса в TypeScript - то, что в скомпилированном JS-коде не остается следов использования интерфейса; результирующий код - не утяжеляется:
… однако, использовать оператор instanceof в данном случае уже не получится - будет ошибка ‘Person’ only refers to a type, but is being used as a value here.