Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
class Animal {
describe(): string {
return "animal";
}
}
class Dog extends Animal {
override describe(): string {
return `dog ${super.describe()}`;
}
}
const pet: Animal = new Dog();
console.log(pet.describe());dog animal
- Ждать, что метод выберет тип переменной
Animal: тип только ограничивает, что tsc разрешит вызвать, а при запуске объект —Dog, и работает егоdescribe. - Ждать, что
overrideуберёт метод базового класса:super.describe()по-прежнему вызывает версиюAnimal, и она возвращаетanimal.
- Что выведет программа, если
Dogне переопределитdescribe? - Что сообщит tsc, если написать
overrideу метода, которого нет в базовом классе?