为 DataSet 设置 fieldId 选项时出现问题

问题描述

我在尝试为与网络图一起使用的数据集设置 fieldId 选项时遇到错误。如果没有设置 fieldId 选项,一切都很好。这是我尝试过的:

import {DataSet} from "vis-data/peer/umd/vis-data";
import {Network} from "vis-network/peer/umd/vis-network";

...

const nodes = new DataSet(data.nodes,{fieldId: "uuid"});
const edges = new DataSet(data.edges);
const networkData = {nodes: nodes,edges: edges};
const network = new Network(container,networkData);

我收到此打字稿错误

参数类型 {nodes: DataSet,边: DataSet,"id">} 不可分配给参数类型 Data ... Type DataSet 不可分配给 类型节点[] |数据接口节点 |未定义 类型 DataSet 不能分配给类型 Node[] | 数据接口 |未定义 类型 DataSet 不可分配给类型 DataInterface

我知道 idfieldId认值,但是根据我所关注的文档,为什么我不能输入新值(字符串)uuid?非常感谢您的帮助。

解决方法

是的,不幸的是,这些包在这方面不一致。 vis-network 不支持更改 id 属性的名称。

要看到这一点,在 vis-data 包中,DataSet 允许在 code 的第 140-3 行使用泛型 Id_Prop

export class DataSet<
    Item extends PartItem<IdProp>,IdProp extends string = "id"
  >

但在 vis-network 包中,相同的通用参数始终设置为 'id'(特别是 typings file 的第 140 行):

export type DataInterfaceNodes = DataInterface<Node,'id'>

如果您直接查看 Network 类的 code,它会直接引用节点的 id 属性。

所以这是包的编写方式所固有的。