Выбор ответа Middle Классы и интерфейсы обновлено

Что остаётся в JS

Вопрос

Что из этого останется в скомпилированном JavaScript?

interface Contract {
  run(): void;
}
abstract class Base {
  abstract run(): void;
  log() { console.log('run'); }
}

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Base, а Contract исчезнет. Интерфейс существует только в системе типов и полностью стирается.

Варианты ответа

  1. Ни то, ни другое: это только типы
  2. Base, а Contract исчезнетправильный ответ
  3. Contract, а Base исчезнет
  4. Оба, как обычные классы

Разбор

Интерфейс существует только в системе типов и полностью стирается. Абстрактный класс это обычный класс JavaScript: модификатор abstract стирается, а сам класс с методом log остаётся в бандле, и от него можно наследоваться в рантайме.

Поэтому абстрактный класс выбирают, когда нужна общая реализация, а интерфейс, когда нужен только контракт.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.