Как мне вернуть тип подкласса от родителя? - PullRequest
0 голосов
/ 11 апреля 2020

При вызове родительского класса 'new this() у меня возникают проблемы с выяснением, как вернуть тип подкласса, а не родительский класс.

В приведенном ниже примере код выполняется без ошибок , но child.hi() отображается как ошибка, поскольку child имеет тип Parent, а не Child.

class Parent {  
  static get() {
    return new this();
  }
}

class Child extends Parent {
  hi() {
    console.log('hi!');
  }

  static make() {
    const child = this.get();
    child.hi(); // <-- type error
  }
}

Child.make();

Typescript Playground Link

1 Ответ

3 голосов
/ 11 апреля 2020

Вы можете решить эту проблему, используя generi c в методе get, чтобы он правильно определил тип:

static get<T>(this: new () => T) {
    return new this();
}

После внесения этого изменения, Parent.get () и Child. get () должен работать как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...