Выбор ответа Middle Классы и интерфейсы обновлено
Что остаётся в JS
Вопрос
Что из этого останется в скомпилированном JavaScript?
interface Contract {
run(): void;
}
abstract class Base {
abstract run(): void;
log() { console.log('run'); }
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Base, а Contract исчезнет. Интерфейс существует только в системе типов и полностью стирается.
Варианты ответа
- Ни то, ни другое: это только типы
Base, аContractисчезнетправильный ответContract, аBaseисчезнет- Оба, как обычные классы
Разбор
Интерфейс существует только в системе типов и полностью стирается. Абстрактный класс это обычный класс JavaScript: модификатор abstract стирается, а сам класс с методом log остаётся в бандле, и от него можно наследоваться в рантайме.
Поэтому абстрактный класс выбирают, когда нужна общая реализация, а интерфейс, когда нужен только контракт.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.