@DarCKoder

Что даёт нам этот участок кода?

class Animal {
    name: string;
    constructor(theName: string) { this.name = theName; }
    move(distanceInMeters: number = 0) {
        console.log(`${this.name} moved ${distanceInMeters}m.`);
    }
}
 
class Snake extends Animal {
    constructor(name: string) { super(name); }
    move(distanceInMeters = 5) {
        console.log("Slithering...");
        super.move(distanceInMeters);
    }
}
 
class Horse extends Animal {
    constructor(name: string) { super(name); }
    move(distanceInMeters = 45) {
        console.log("Galloping...");
        super.move(distanceInMeters);
    }
}
 
let sam = new Snake("Sammy the Python");
let tom: Animal = new Horse("Tommy the Palomino");
 
sam.move();
tom.move(34);


Интересует строка:
let tom: Animal = new Horse("Tommy the Palomino");
tom:Animal что это может нам дать?
  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
GTRxShock
@GTRxShock
SA
Тут вы явно указываете суперкласс.
Причем вы не привязываетесь к конкретной реализации, а используете своего рода интерфейс. Чтобы потом можно было проверить объект на вхождение в множество Animal

https://learn.javascript.ru/instanceof

Далее по коду вы сможете делать проверки является ли объект животным, а-ля:
if (tom instanceof Animal) { //do..(покормить/воды налить/спать уложить и тд }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы