TypeScript: полиморфизм с абстрактными методами - PullRequest
0 голосов
/ 01 марта 2019

Как я могу сделать эту работу?

abstract class Animal {
    // No constructor
    ...    
    public abstract me():Animal;
}

class Cat extends Animal {
    constructor() {
        super();
    }

    // This fails! Why? Isn't every cat an Animal?
    me():Cat {
        return this;
    }
}

Я получаю эту ошибку:

Тип 'this' нельзя назначить типу 'Animal'.

1 Ответ

0 голосов
/ 03 марта 2019

Я, наконец, получил это работает.Оказалось, что если я не реализую правильно каждый метод в абстрактном классе, машинопись не сможет определить, расширяет ли дочерний класс родительский или нет.

Еще одна вещь, которая мешала мне, заключалась в том, чтоссылка на this в обратном вызове обещания не указывает на фактический экземпляр объекта.

...