【问题标题】:typescript : can't access base class methods from derived class打字稿:无法从派生类访问基类方法
【发布时间】:2018-09-18 12:41:58
【问题描述】:

我尝试将 Openlayers 控件类扩展为 typescript 中的自定义类。即使在拨打super() 之后,我也无法访问超类方法,

import olControl from 'ol/control/control';
@Component({
  selector: 'track-me',
  template: require('./zoomhistory.html'),
  //styles: [require('./map.scss')]
})
  export class ZoomControl extends olControl {
    static parameters = [];
    constructor() {

      let zoomCtrlButton = document.getElementById('trackme');
      super({ element: zoomCtrlButton });   
      var self = this;
      debugger;
      self.setMap(this._map);
    }
  }

它会显示 property setMap() doesn't exist on type ZoomControl , 那就不能编译了。但是当我将调试器放在this 上时,我可以从开发者控制台看到 setMap 方法。有什么解决方法吗?

【问题讨论】:

  • 问题可能出在您导入的olControl 上。请将其添加到问题中。
  • 导入控制没问题,因为我也可以创建该类的新实例。我已经更新了问题
  • 我仍然无法重现该错误。如果您发布一个为您重现问题的存储库,我会查看它。
  • ol/control/Control 将匹配类型。

标签: typescript openlayers


【解决方案1】:
  • 确保“setMap”在olControl 中定义为公共方法
  • 尝试以self[“setMap”](this._map) 访问此方法

【讨论】:

  • olControl 是 Openlayers 库的一个类,我在这里尝试通过扩展 openlayers 控件来创建自定义控件。我认为你断章取义
猜你喜欢
  • 2012-04-28
  • 2014-06-22
  • 1970-01-01
  • 2017-11-28
  • 2013-08-16
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多