Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript pie()不接受对象数组_Javascript_Typescript_D3.js - Fatal编程技术网

Javascript pie()不接受对象数组

Javascript pie()不接受对象数组,javascript,typescript,d3.js,Javascript,Typescript,D3.js,我有以下代码: public data = [ { value: 61, color: 'orange', }, { value: 29, color: 'white', }, { value: 10, color: 'blue', }, ]; 这基本上是关于使用d3js构建圆环图的各种教程的结果 现在,我想为数据数组中的项添加一个自定义接口,并在.value()函数中正确键入d参数 问题是,@types/d3包将预期的数

我有以下代码:

public data = [
  {
    value: 61,
    color: 'orange',
  },
  {
    value: 29,
    color: 'white',
  },
  {
    value: 10,
    color: 'blue',
  },
];
这基本上是关于使用d3js构建圆环图的各种教程的结果

现在,我想为数据数组中的项添加一个自定义接口,并在
.value()
函数中正确键入
d
参数

问题是,
@types/d3
包将预期的数据数组定义为
number[]
d
参数定义为
number

这意味着我不能为数据项使用自定义接口。在这种情况下,D3的typings包似乎是错误的,因为我读过的所有教程都是这样做的,代码工作得很好


在这种情况下,我有什么选择?有什么解决办法吗?我可以忽略妨碍我的打字吗

d3
pie
仅为此接受一个泛型

以下是解决此问题的方法:

interface IData {
  value: number;
  color: string;
}

const data: IData[] = [
  {
    value: 61,
    color: 'orange',
  },
  {
    value: 29,
    color: 'white',
  },
  {
    value: 10,
    color: 'blue',
  },
];

const pie = d3
  .pie<IData>()
  .padAngle(0)
  .value(d => d.value);

const arcs = pie(data);
接口数据{
值:数字;
颜色:字符串;
}
常数数据:IData[]=[
{
价值:61,
颜色:“橙色”,
},
{
价值:29,
颜色:'白色',
},
{
数值:10,
颜色:“蓝色”,
},
];
常数pie=d3
.pie()
.padAngle(0)
.value(d=>d.value);
常数弧=饼图(数据);
const arcs = this.pie(this.data);
interface IData {
  value: number;
  color: string;
}

const data: IData[] = [
  {
    value: 61,
    color: 'orange',
  },
  {
    value: 29,
    color: 'white',
  },
  {
    value: 10,
    color: 'blue',
  },
];

const pie = d3
  .pie<IData>()
  .padAngle(0)
  .value(d => d.value);

const arcs = pie(data);