Angular中使用Chart.js配置y轴刻度回调出现TS2322类型错误如何解决
报错原因
- 回调函数的第一个入参被你错误标注为
void类型,和Chart.js定义的ticks.callback入参类型(string | number)不匹配 - 你当前的实现没有处理入参为字符串的场景,也会触发类型校验错误
修复代码
直接替换你的y轴配置为以下内容即可:
y: { title: { display: true, text: 'Total a pagar $' }, ticks: { callback: function(tickValue: string | number) { const num = Number(tickValue); // 兼容非数字的刻度值 if (isNaN(num)) return tickValue; // 不需要保留小数可以把toFixed去掉,直接写return (num / 1000) + 'k' return (num / 1000).toFixed(0) + 'k'; } } }
额外说明
- 你代码里的
scaleLabel配置在Chart.js v3及以上版本已经废弃,官方已经把这部分配置合并到title字段中,所以上面的代码已经移除了这段冗余配置,不会影响功能 - 如果需要支持更大数值的单位转换(比如1000000转为1M),可以在回调里增加层级判断逻辑即可
内容的提问来源于stack exchange,提问作者Kristina Marquez
相关产品推荐
相关产品推荐

