Javascript 使用D3.mouse时出现D3类型脚本错误:';这';隐式具有类型';任何';因为它没有类型注释

Javascript 使用D3.mouse时出现D3类型脚本错误:';这';隐式具有类型';任何';因为它没有类型注释,javascript,typescript,d3.js,Javascript,Typescript,D3.js,我在react应用程序中使用了d3,在那里我使用Typescript编写代码。我有以下代码: function mousemove() { // recover coordinate we need var x0 = xScale.invert(d3.mouse(this)[0]); var i = bisect(data, x0, 1); var selectedData = data[i] focus

我在react应用程序中使用了
d3
,在那里我使用Typescript编写代码。我有以下代码:

function mousemove() {
        // recover coordinate we need
        var x0 = xScale.invert(d3.mouse(this)[0]);
        var i = bisect(data, x0, 1);
        var selectedData = data[i]
        focus
            .attr("cx", xScale(selectedData.dateCreated))
            .attr("cy", yScale(selectedData[value]))
        focusText
            .html("x:" + selectedData.x + "  -  " + "y:" + selectedData.y)
            .attr("x", xScale(selectedData.dateCreated) + 15)
            .attr("y", yScale(selectedData[value]))
}
d3.鼠标(this)[0]
抛出以下错误:

“this”隐式具有类型“any”,因为它没有类型批注


有什么解决办法吗?此错误是常见的typescript错误,但我不知道如何使用d3.mouse函数解决此错误。

我假设这是传递给d3.js事件处理程序的自定义方法(即
.on('mousemove')

您可以通过引用实际的事件处理程序来处理事件回调,而不是引用此,后者可能被推断为当前类的实例

.on('mousemove' (d, i) => {
  mousemove();
})

function mousemove() {
  const x0 = xScale.invert(d3.mouse(d3.event.currentTarget));
  // do the rest
}
或者,您可以将节点传递给
mousemove()
函数。据报道,

如果选择器是一个函数,则会针对每个选定项对其求值 元素,依次通过当前基准(d),当前 索引(i)和当前组(节点),并将其作为当前DOM 元素(节点[i])


密切相关且可能是更好的解决方案:。
.on('mousemove' (d, i, n) => {
  const node = d[i]
  mousemove(node);
})

function mousemove(node) {
      // do the rest
}