protected x: string = 'a';
constructor() {
this.doSomeThing();
}
protected doSomeThing(): void {}
}
export class BClass extends AClass {
protected x: string = 'b';
constructor() {
super();
}
protected doSomeThing(): void {
console.log('x: ', this.x);
}
}
Почему в косоле выводится: x: a ?
Типы можно не указывать если ты сразу присваиваешь, тс их выводит сам
Потому что ты переопределил doSomeThing в дочернем классе
Ок, объявление примитивных типов это другой вопрос. Почему выводится 'а', а не 'b'?
Потому что у финального объекта уже переопределен метод прототипа
Мы создаём instance класса B. В нём чётко объявляется свойство x, которое должно перезаписать значение родителя. А выводится именно значение родителя
Что вы имеете в виду под фразой финальный объект?
А, подожди, да
у класса Б свое поле x
Свойство. Да, как и у класса A. И?
в чем прикол protected?
Как и всего ТС - статические проверки и ошибки на стороне ТС
Обсуждают сегодня