在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中的on
方法签名已更改。声明文件如下所示。
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>;
}
}
以下是与d3相关的npm依赖项。
如何在TypeScript中做同样的事情?
答案 0 :(得分:1)
事实证明我必须做一些演员。
let event = d3.event as d3.BaseEvent;
event.sourceEvent.stopPropagation();