我在d3中得到了一个图形示例,我在我的angular 2 typescript应用程序上面临着实现这个问题的困难。它的行包含“---->错误”注释。
不知道如何解决这个问题。有什么帮助吗?
d3.transition().duration(d3.event.altKey ? 7500 : 750).each(function () {
path.exit().transition()
.style("fill-opacity", function (d) {
return d.depth === 1 + (root === p) ? 1 : 0; //----> Error: Operator '+' cannot be applied to types '1' and 'boolean'.
})
.attrTween("d", function (d) {
return arcTween.call(this, exitArc(d));
})
.remove();
path.enter().append("path")
.style("fill-opacity", function (d) {
return d.depth === 2 - (root === p) ? 1 : 0; //----> Error: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
})
.style("fill", function (d) {
return d.fill;
})
.on("click", zoomIn)
.on("mouseover", mouseOverArc)
.on("mousemove", mouseMoveArc)
.on("mouseout", mouseOutArc)
.each(function (d) {
this._current = enterArc(d);
});
path.transition()
.style("fill-opacity", 1)
.attrTween("d", function (d) {
return arcTween.call(this, updateArc(d));
});
});
答案 0 :(得分:2)
第一个错误:
return d.depth === 1 + (root === p) ? 1 : 0; //----> Error: Operator '+' cannot be applied to types '1' and 'boolean'.
您无法添加1 + (root === p)
。你很可能需要改变括号:
return d.depth === 1 + (root === p ? 1 : 0);
第二个:
return d.depth === 2 - (root === p) ? 1 : 0; //----> Error: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
与第一个相同。在这里,您尝试从数字(root === p)
中减去布尔2
。再次移动括号将解决错误(如果它给你你想要的东西)。
return d.depth === 2 - (root === p ? 1 : 0);
虽然在这两种情况下看起来都有些令人费解。您可以完全删除加法/减法:
return d.depth === (root === p ? 2 : 1);