使用highcharts-angular+TS修改y轴类型报yAxis不存在错误如何解决
解决方案
该报错属于TypeScript类型推导问题:导出按钮配置的onclick回调默认被推导的this类型为ExportingButtonsOptionsObject,但实际运行时回调的this指向的是Highcharts Chart实例,只有实例上才存在yAxis属性。
解决方法
- 方法1:显式指定this类型(推荐)
在onclick函数的参数第一位声明this的类型为Highcharts.Chart(需确保项目已正确引入Highcharts的类型定义),修改后的配置代码如下:
customButton: { text: 'Linear', onclick: function (this: Highcharts.Chart) { this.yAxis[0].update({ type: 'linear' }) } }, customButton2: { text: 'Logarithmic', onclick: function (this: Highcharts.Chart) { this.yAxis[0].update({ type: 'logarithmic' }) } }
该写法是TypeScript的原生语法,仅用于类型推导,不会影响函数实际的参数传递逻辑。
- 方法2:临时类型断言(仅调试用,不推荐长期使用)
如果需要快速跳过类型检查,可以直接将this断言为any:
onclick: function () { (this as any).yAxis[0].update({ type: 'linear' }) }
注意事项
不要使用箭头函数定义onclick回调,箭头函数的this会继承外层作用域的上下文,不会指向Chart实例,运行时会触发属性不存在的错误。
内容的提问来源于stack exchange,提问作者Daniel Davidraj
相关产品推荐
相关产品推荐

