typcript: тип производного класса в суперклассе - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть абстрактный класс машинописного текста:

abstract class Abstract {

  constructor (public parent?: Abstract) {
  }

}

Теперь я определяю 2 подкласса:

class Sub1 extends Abstract {

}

class Sub2 extends Abstract {

}

родитель имеет тип Abstract, так что это возможно:

let sub1 = new Sub1 ();

let sub2 = new Sub2 (sub1);

Но я хочу, чтобы Sub1.parent имел тип Sub1, а Sub2.parent должен иметь тип Sub2. Как мне указать это в определении тезисов?

1 Ответ

1 голос
/ 11 апреля 2019

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

class Sub2 extends Abstract {
    public test: number;
    constructor (parent?: Sub2) {
        super(parent);
    }
}

let sub2 = new Sub2 (sub1); // will not work
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...