【问题标题】:pie() does not accept an array of objectspie() 不接受对象数组
【发布时间】:2019-07-28 02:15:32
【问题描述】:

我有以下代码:

public data = [
  {
    value: 61,
    color: 'orange',
  },
  {
    value: 29,
    color: 'white',
  },
  {
    value: 10,
    color: 'blue',
  },
];
  public pie = d3
    .pie()
    .padAngle(0)
    .value((d: any) => d.value);
const arcs = this.pie(this.data);

这基本上是关于使用 d3js 构建圆环图的各种教程的结果。

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

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

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

在这种情况下我有哪些选择?有什么解决方法吗?我可以覆盖进入我的方式的打字吗?

【问题讨论】:

    标签: javascript typescript d3.js


    【解决方案1】:

    d3pie 只接受一个泛型。

    解决方法如下:

    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);
    

    【讨论】:

      猜你喜欢
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 2017-11-24
      • 1970-01-01
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      相关资源
      最近更新 更多