由于d3事件错误,无法转译typescript。

3

我在一个使用Typescript和Webpack的Angular 2项目中有一个d3散点图表。图表的一部分响应鼠标悬停事件以显示工具提示。现在,鼠标悬停事件实际上可以完美地触发,但是当Webpack转译Typescript时,我看到了一个错误。

 Property 'pageX' does not exist on type 'Event | BaseEvent'.

这是一段代码片段,展示了图表元素的“mouseover”部分和有问题的 d3.event.pageX
  .on("mouseover", (d: any) => {
    if(d.roleName) {
      div.transition()
        .duration(200)
        .style("display", "block")
        .style("opacity", 1);
      div.html(d.roleName + "<br/>"  + d.org.name)
        .style("left", (d3.event.pageX) + "px")
        .style("top", (d3.event.pageY-80) + "px");
    }
  })

我相对来说对TypeScript不太熟悉,但是据我了解,上述问题可能与d3类型文件的映射不正确有关?

非常感谢任何指导。

2个回答

3

由于d3不是一个真正的TypeScript库,因此我们获得 .d.ts 文件来描述原始库。在这种情况下,它无法知道 on("mouseover" 内的 d3.event 实际上表示 MouseEvent,所以您可以尝试将其转换为其他类型或忽略编译器中的此小部分:

.on("mouseover", (d: any) => {
  if(d.roleName) {
    div.transition()
      .duration(200)
      .style("display", "block")
      .style("opacity", 1);
    div.html(d.roleName + "<br/>"  + d.org.name)
      .style("left", ((<any>d3.event).pageX) + "px")
      .style("top", ((<any>d3.event).pageY-80) + "px");
  }
})

0

1
这正是问题所在...即 https://github.com/DefinitelyTyped/DefinitelyTyped/issues/4590 看起来去年合并了一个解决它的PR https://github.com/DefinitelyTyped/DefinitelyTyped/pull/4623 但代码已经改变了。 - vilsbole

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接