Как получить "этот" тип в машинописи - PullRequest
0 голосов
/ 04 марта 2019
class A {
    method : this = () => this;
}

То, что я хочу, это для this , используемого в качестве возвращаемого типа, для представления текущего класса, то есть подкласса a в A. Таким образом, метод возвращает только значения того же типа, что икласс (не только базовый класс, А).


Я думаю, что у меня есть что-то похожее с этим:

class A {
    method : <T extends A> () => T = () => this;
}

Но это кажетсяизлишний.Я продублировал A.Конечно, есть лучший способ сделать это? ..

1 Ответ

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

Вы почти получили его, тип свойства method должен быть объявлен как () => this, а не просто this.Компилятор понимает, что при использовании в качестве типа this является полиморфным

class A {
    method : () => this = () => this;
}

class B extends A {

}

const b = new B();

const bb = b.method(); // inferred as const bb: B;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...