alex4answ
@alex4answ

Почему тип дочернего класс не совместим с родительским, не может быть назначен this?

Добрый день, я так и не смог разобраться в полиморфном this и почему дочерние классы несовместимы с родительскими в некоторых моментах:

class A {
  parent: A;

  constructor(parent: A) {
    this.parent = parent;
  }
}

class B extends A {
  getParent(): this { // ERROR
    return this.parent; // ERROR
  }
}

Error: Type 'A' is not assignable to type 'this'. 'this' could be instantiated with an arbitrary type which could be unrelated to 'A'.

Да речь идет о невозможности назначить тип A полиморфному типу this

Почему?, ведь подкласс B расширяет класс A, соответственно они совместимы, в чем проблема?
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
Kozack
@Kozack
Thinking about a11y
В том то и дело, что он его расширяет.
Класс Б = А, но А != Б.

Вы говорите, что метод должен возвращать класс Б (со всеми расширениями) но возвращаете А, где их нет.

Рабочий вариант
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы