2012-11-15 50 views
1

我使用Event.js捕捉揮筆,https://github.com/mudcube/Event.js,如果我嘗試declare var Event: any;,然後Event.add(test, "swipe", function() {}, { snap: 45 });它產生以下錯誤:使用一個js插件,修改事件的打字稿

Error 1 The property 'add' does not exist on value of type '{ prototype: Event; CAPTURING_PHASE: number; AT_TARGET: number; BUBBLING_PHASE: number; new(): Event; }' 

如果我嘗試:

declare interface Event { 
    add: any; 
}; 

我得到Duplicate identifier 'add'

爲何不重寫屬性?

回答

1

這是因爲已經有一個在TypeScript中定義的事件,所以你有一個名稱衝突。

你可以別名它在你的JavaScript,比如...

var eventJS = Event; 

然後,你可以參考eventJS在您的打字稿,避免衝突。否則,如果您只需要第二個添加函數,則聲明其簽名,並且只要它不接受相同的參數,它就應該作爲覆蓋。

interface Event { 
    add(name: string, eventType: string, callback: Function) : any; 
}; 
+0

不到風度工作,STIL輸出'屬性「添加」的類型值不存在[...]'你嘗試 – localhost

+0

哪一個?聲明接口或別名? – Fenton

+0

這兩個別名都沒有做任何事情,因爲'eventJS'仍然是TS的Event對象。使用add()方法或使用add:any屬性聲明接口仍然不起作用,稍後返回'Duplicate identifier'add''。 – localhost