“any”类型的参数不可分配给“never”类型的参数。ts(2345)
问题引入
在进行项目开发时,用到了 el-tree 标签,就是组织树状数据渲染页面,类似菜单,然后父级菜单下会有多个子菜单。本次总共就两层。这里遇到的问题是,后端返回的数据就是一个list,属于叶子节点,父级节点是固定的,需要前端写死,但就在写死了父级节点,并将叶子节点加入到父级节点下后,之前选中保存的,并且后端返回的数据中也有选中标识,但页面没有出现选中状态,因为之前也有类似的页面,仔细对比了数据结构,几乎一模一样,百思不得其解
下面是代码示例:
<el-tree class="filter-tree" :data="treeDataList" show-checkbox @check="handleCheckChange" node-key="id" highlight-current
:props="defaultProps" :default-checked-keys="resourceCheckedKey" :filter-node-method="filterNode" ref="datatreeRef">
</el-tree>
查看代码
var treeDataTmp = {
id: 999,
viewName: "父节点",
checked: false,
subNodeList: [],
hasDict: '0',
parentId: null
}
let isCheck = false;
let subNodeListTmp = [];
for (let item of resDataList) {
item.parentId = 999;
if (item.checked) {
isCheck = true;
}
subNodeListTmp.push(item);
}
treeDataTmp['checked'] = isCheck;
treeDataTmp['subNodeList'] = subNodeListTmp;
const treeDataListTmp = [];
treeDataListTmp.push(eventTmp);
state.data.treeDataList=treeDataListTmp;
treeDataTmp['subNodeList'] = subNodeListTmp; 和
state.data.treeDataList=treeDataListTmp;
这两行会有红色波浪线报错提示,鼠标移上去,报错提示如下
不影响项目运行,页面也能渲染出数据,但是导致勾选状态未选中。
解决
尝试了很多种解决方案,最终竟然只需要在 声明 subNodeList 和 treeDataListTmp 时,在其后加上 as any 就行,就是这样:
var treeDataTmp = {
id: 999,
viewName: "父节点",
checked: false,
subNodeList: [] as any,
hasDict: '0',
parentId: null
}
const treeDataListTmp = [] as any;