在TypeScript

时间:2017-02-23 15:27:02

标签: unit-testing typescript drag-and-drop

我正在编写依赖于事件dataTransfer的拖放交互的单元测试。我也在使用打字稿。为了模拟事件,我写了这个小函数:

function createDragEvent(eventName: string, dataTransferData?: Array<any>) {
    const event = new CustomEvent(eventName, { bubbles: true, cancelable: true });
    event.dataTransfer = {
        setData: jasmine.createSpy("setData() spy"),
        getData: jasmine.createSpy("getData() spy").and.callFake(function() {
            return dataTransferData[0] === 'text/plain' ? dataTransferData[1] : undefined;
        })
    };
    return event;
}

但是,TypeScript告诉我

  

TS2339:Property&#39; dataTransfer&#39;类型&#39; CustomEvent&#39;。

上不存在

我不能使用dataTransfer而我无法使用原生DragEvent因为我无法设置数据或监视其功能。有没有办法解决这个问题,例如:告诉TypeScript dataTransfer没问题,或者为这个文件或类似的东西禁用错误?

2 个答案:

答案 0 :(得分:4)

你可以这样做吗?

<external-path name="external_files" path="."/>

答案 1 :(得分:3)

如果有人像我一样来到这里,因为TypeScript中的Event对象没有dataTransfer属性:

只需使用DragEvent