Svelte TS项目调用ECharts setOption报Expected 0 type arguments错误
报错根因
版本依赖冲突:
- 安装的
@types/echarts@^4.9.15是第三方为ECharts 4.x版本维护的类型定义,和你使用的ECharts 5.3.3版本完全不兼容 - ECharts自5.0版本开始已经内置官方维护的TypeScript类型,无需额外安装
@types/echarts包 - 当前TS读取的是4.x版本的旧类型定义,其中
setOption方法未定义泛型参数,因此抛出Expected 0 type arguments, but got 1错误。
修复方案
- 卸载冲突的旧类型依赖
npm uninstall @types/echarts # 使用其他包管理器对应替换命令即可:yarn remove @types/echarts / pnpm remove @types/echarts
- 调整代码逻辑,移除
setOption后多余的泛型传参,同时修正Svelte中DOM获取的时机问题(顶层脚本执行时DOM还未渲染,直接调用document.getElementById会拿到空值),修正后代码如下:
<script lang="ts"> import * as echarts from 'echarts'; import type { EChartsOption } from 'echarts'; import { onMounted } from 'svelte'; let chartDom: HTMLDivElement; let myChart: echarts.ECharts; let option: EChartsOption; onMounted(() => { myChart = echarts.init(chartDom); option = {}; myChart.on('updateAxisPointer', function (event: any) { const xAxisInfo = event.axesInfo[0]; if (xAxisInfo) { const dimension = xAxisInfo.value + 1; myChart.setOption({ series: { id: 'pie', label: { formatter: '{b}: {@[' + dimension + ']} ({d}%)' }, encode: { value: dimension, tooltip: dimension } } }); } }); myChart.setOption(option); }) </script> <div bind:this={chartDom} id="main" style="width: 100%; height: 400px;"></div>
补充说明
如果卸载依赖后仍存在类型报错,删除项目node_modules目录与依赖锁文件后重新执行依赖安装,重启TS服务清除旧类型缓存后错误就会消失。
内容的提问来源于stack exchange,提问作者user1916077
相关产品推荐
相关产品推荐

