【发布时间】:2019-07-18 01:34:02
【问题描述】:
我正在尝试了解如何在 D3 中使用 attrTween 函数。 我正在尝试从以下示例中实现饼图:http://bl.ocks.org/mbostock/5100636。
但是,当我到达过渡部分时,我遇到了问题。
private populateGauge(): void {
const innerRadius = this.radius - 50;
const outerRadius = this.radius - 10;
const arc = d3
.arc()
.innerRadius(innerRadius)
.outerRadius(outerRadius)
.startAngle(0);
const background = this.svg
.append('path')
.datum({ endAngle: this.tau })
.style('fill', '#ddd')
.attr('d', arc);
this.myEndAngle = { endAngle: (this.gaugeData.value / 100) * this.tau };
const foreground = this.svg
.append('path')
.datum(this.myEndAngle)
.style('fill', 'orange')
.attr('d', arc);
foreground
.transition()
.duration(1500)
.attrTween('d', function(newAngle) {
return function(d) {
const interpolate = d3.interpolate(d.endAngle, newAngle);
return function(t) {
d.endAngle = interpolate(t);
return arc(d);
};
};
});
}
我一直在尝试使用简单的基本情况,并且只在插值函数中使用 0,但我无法摆脱最后一个返回语句抛出的最终错误(return arc(d));
“数字”类型的参数不能分配给类型参数 'DefaultArcObject'。
如何解决这些问题? 如果您需要提供更多信息,请告诉我。
【问题讨论】:
-
我认为这运行良好。你只想让 TypeScript 警告静音?使用 D3 和 TypeScript 获得正确的类型可能会很痛苦。
标签: javascript angular typescript d3.js