Я пробовал этот код с TypeScript 2.6 и 3.4:
abstract class Base {
private _prop = false;
public get prop() { return this._prop; }
public setProp(v) { this._prop = v; }
private _otherProp = false;
public get otherProp() { return this._otherProp; }
public set otherProp(v) { this.setOtherProp(v); }
public setOtherProp(v) { this._otherProp = v; }
}
class MyBase extends Base {
public set prop(v) { this.setProp(v); }
}
const base = new MyBase();
base.setProp(true);
base.setOtherProp(true);
console.log(`prop = ${base.prop}`); // prop = undefined
console.log(`otherProp = ${base.otherProp}`); // otherProp = true
Почему другой результат? Обратите внимание, что если я закомментирую set prop()
в классе MyBase
, то оба свойства вернут true
, однако этот установщик никогда даже не выполняется, так почему же важно, что он там есть?
Запустите код самостоятельно (результаты в консоли)