2017-02-23 21 views
1

我正在編寫依賴於事件的dataTransfer的拖放交互的單元測試。另外我正在使用打字稿。爲了模擬事件(S)我寫了這個小功能:在TypeScript中爲拖拽事件模擬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; 
} 

然而,打字稿告訴我

TS2339:房產「數據傳遞」不上鍵入「自定義事件」存在。

我不能使用dataTransfer因爲我不能設置其職能的數據或間諜我不能使用native DragEvent秒。有沒有辦法解決這個問題,例如告訴TypeScript,dataTransfer是好的,或者禁用此文件的錯誤或類似的東西?

回答

2

你能做這樣的事嗎?

const event: CustomEvent & { dataTransfer?: DataTransfer } = 
    new CustomEvent(eventName, { bubbles: true, cancelable: true }); 
+0

是的!謝謝!最後我不得不做'CustomEvent&{dataTransfer?:任何}',但你的方法工作! – Lukas