关于TS里get set 继承问题

175 阅读1分钟

父类:

class F {
    protected _name: string = "test";

    get name(): string {
        console.log('F.this', this)
        return this._name;
    }
}

子类:

class C extends F {
    set name(name: string) {
        this._name = name;
    }
    showName() {
        console.log(this.name)
    }
}

我的期望是它能够打印出来test,但是实际上却是打印了undefined。 为什么会这样呢?通过断点查看this。 image.png

能看出来,C类里面是没有get name()的。所以这里的父类F的get name() 方法没有被继承下来,因此子类C的name就是undefined。

如果想使用name,可以使用super.name去调用父类的get name()方法

引发另一个担忧,什么东西不会被继承下来呢? 有空再继续。