使用Typescript,angular2不接受JS中的操作

时间:2017-06-27 13:44:05

标签: angular typescript

我在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));
        });


    });

1 个答案:

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