Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用TypeScript停止d3中的事件传播?_Javascript_D3.js_Typescript_Typescript Typings - Fatal编程技术网

Javascript 如何使用TypeScript停止d3中的事件传播?

Javascript 如何使用TypeScript停止d3中的事件传播?,javascript,d3.js,typescript,typescript-typings,Javascript,D3.js,Typescript,Typescript Typings,在JavaScript中,我有如下代码,用于在拖动某个对象时停止事件传播 var drag = d3.behavior.drag() .origin(function(d) { return d; }) .on('dragstart', function(e) { d3.event.sourceEvent.stopPropagation(); }) .on('drag', function(e) { ... }); 在TypeScript中,我注意到,d3.

在JavaScript中,我有如下代码,用于在拖动某个对象时停止事件传播

var drag = d3.behavior.drag()
  .origin(function(d) {
    return d;
  })
  .on('dragstart', function(e) {
    d3.event.sourceEvent.stopPropagation();
  })
  .on('drag', function(e) { ... });
在TypeScript中,我注意到,
d3.event.sourceEvent
不存在。下面是相应的TypeScript代码

let drag = d3.behavior.drag()
  .origin( (d, i) => {
    let data = d as any;
    return { x: data.x as number, y: data.y as number };
  })
  .on('dragstart',  (d, i) => { 
    //what to do here
   })
  .on('drag', (d, i) => { ... });
事实上,上的
方法签名在TypeScript中已更改。声明文件如下所示

export module behavior {
 interface Drag<Datum> {
  on(type: string): (d: Datum, i: number) => any;
  on(type: string, listener: (d: Datum, i: number) => any): Drag<Datum>;
 }
}
导出模块行为{
界面阻力{
on(类型:字符串):(d:基准,i:编号)=>任意;
打开(类型:字符串,侦听器:(d:Datum,i:number)=>any):拖动;
}
}
下面是我与d3相关的npm依赖项

  • “@types/d3”:“3.5.37”
  • “d3”:“^3.5.16”

你知道如何在TypeScript中做同样的事情吗?

结果我不得不做一些铸造

let event = d3.event as d3.BaseEvent;
event.sourceEvent.stopPropagation();

我想应该是
d3.event.stopPropagation()
我在使用Scala.js时遇到了同样的问题,您的回答帮助我找到了解决方案:d3.event.asInstanceOf[MouseEvent].stopPropagation()