@sanex3339

Почему св-во наследуемого класса undefined внутри реализации абстрактного метода?

Есть код. Почему this указывает на класс, в котором вызывается, а this.name на класс родитель? Как исправить?

abstract class Abstract {
	protected name: string;
	
	constructor () {
		this.abstractMethod();
	}
	
	protected abstract abstractMethod (): void;
}

class Concrete extends Abstract {
	protected name: string = 'Concrete';
	
	protected abstractMethod () {
		console.log(this, this.name); // Concrete, undefined
	}
}

new Concrete();


Ссылка на пример
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ответы на вопрос 1
@sanex3339 Автор вопроса
В коде сделал иначе, но это таки баг:
https://github.com/Microsoft/TypeScript/issues/7724
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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