Какие плюсы и минусы интерфейсов

«Какие плюсы и минусы интерфейсов» — вопрос из категории TypeScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Плюсы:

  • Четкое разделение контракта и реализации
  • Легче тестировать (можно мокать интерфейсы)
  • Упрощает поддержку кода (меньше связности)
  • Позволяет реализовывать полиморфизм

Минусы:

  • Добавляет абстракцию (может усложнить код)
  • Требует дополнительного времени на проектирование
  • В JS/TS нет проверки на этапе компиляции, что класс реализует все методы интерфейса
interface Animal {
  makeSound(): void;
}

class Dog implements Animal {
  makeSound() {
    console.log('Woof!');
  }
}

class Cat implements Animal {
  makeSound() {
    console.log('Meow!');
  }
}