【问题标题】:Inherit acessor in typescript在打字稿中继承访问者
【发布时间】:2017-06-09 08:24:39
【问题描述】:

我有一个 A 类,它拥有一个包含多个字符串的对象的访问器。 整个过程提供了一种获取 url 以调用 Vertx API 的简单方法。

我的问题是我想在继承类 A 的子类 B 中重载这个 API。

类似的东西:

class A {
    get api () {
        return {
            GET_LESSON : '/lesson/',
        };
    }
}


class B extends A{
    get api () {
        return _.extend(super.api, {
            GET_CALL : '/lesson/call/',
       });
   }
}

但它不起作用,我收到错误:

TS2340:只有基类的公共和受保护方法可以通过“super”关键字访问。

为什么会出现这个错误?这是 Typescript 访问器的预期行为吗?

【问题讨论】:

  • 错误说明了一切。您的 api getter 是 A 类私有的,因此您无法在 B 类中访问它。
  • @realbart 我认为默认情况下每个属性或方法都是公共的。在 A 类中公开访问器也无济于事。
  • 是的,正如它所说,只有 方法(不是属性或字段)可以通过 super 访问。

标签: typescript inheritance accessor


【解决方案1】:

这是 Typescript 访问器的预期行为

是的。正在这里跟踪:https://github.com/Microsoft/TypeScript/issues/338

尚不支持的原因:当前的super 查找非常简单。如前所述,更改会影响性能。

【讨论】:

    猜你喜欢
    • 2017-12-04
    • 2017-07-14
    • 1970-01-01
    • 2019-02-26
    • 2017-04-10
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多