NgxEchartsModule使用tooltip报错类型'TopLevelFormatterParams'无法索引如何解决
问题原因
- 该报错是TypeScript的类型校验触发的:ECharts的
tooltip.formatter回调的入参params是联合类型TopLevelFormatterParams,当trigger为item时是单个数据对象,当trigger为axis时是多个数据对象组成的数组,TypeScript无法自动推断当前trigger: 'axis'场景下params为数组类型,因此不允许直接使用下标[0]取值。
解决方案
方案1:添加类型守卫(最稳妥,兼容所有触发场景)
直接在formatter回调内先判断params是否为数组,既可以通过类型校验,也能避免后续修改trigger类型引发运行时报错:
formatter: (params) => { // 数组对应axis触发场景 if (Array.isArray(params)) { return params[0].seriesName; } // 非数组对应item触发场景,可按需编写兜底逻辑 return params.seriesName; }
方案2:类型断言(适合确定不会修改trigger类型的场景)
手动告知TypeScript当前场景下params一定是数组类型:
首先从echarts包导入对应的类型定义:
import type { CallbackDataParams } from 'echarts/types/dist/shared';
然后修改formatter代码:
formatter: (params) => { const axisParams = params as CallbackDataParams[]; return axisParams[0].seriesName; }
额外注意事项
你当前的series配置中没有声明name属性,即便解决了类型报错,返回的seriesName也会是空值,需要给series补充name配置:
series: [ { name: '你的指标名称', // 补充该字段 data: values, type: 'line', }, ],
内容的提问来源于stack exchange,提问作者binaryBigInt
相关产品推荐
相关产品推荐

