【发布时间】: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 typescriptlang.org/play/…
-
@realbart 我认为默认情况下每个属性或方法都是公共的。在 A 类中公开访问器也无济于事。
-
是的,正如它所说,只有 方法(不是属性或字段)可以通过
super访问。
标签: typescript inheritance accessor