2017-08-08 37 views
3

我爲我寫的非ts庫提供了打字稿定義文件。我的圖書館延伸EventEmitter2爲「原生」事件系統,所以我試圖確定如何定義:在第三方定義文件中擴展類

/// <reference types="eventemitter2" /> 

declare module "my-module" { 
    class MyClass extends EventEmitter2 { 
    // ... 
    } 
} 

...這是行不通的。 EventEmitter2提供d.ts文件,所以它應該是可用的,但我得到的錯誤是:

Cannot find name 'EventEmitter2'

我不TS足夠的工作,知道我要去哪裏錯了。我試過閱讀文檔/尋找例子,但似乎沒有解決這類問題。

回答

1

而不是使用三斜槓指令,你可以從eventemitter2導入類型聲明:

import { EventEmitter2 } from 'eventemitter2'; 

declare module "my-module" { 
    class MyClass extends EventEmitter2 { 
    // ... 
    } 
} 

三重斜線指令不起作用,因爲.d.ts文件是模塊本身是不在node_modules/@types之下。

+0

我曾試過不同的'進口',但這個工程。謝謝!現在我想到了,這不需要我的庫具有對等關係以便爲最終用戶進行編譯?這是行不通的,所以我可能需要手動包含相關的方法。 – helion3

+0

是的,你需要它作爲依賴。目前還不清楚爲什麼如果你還沒有使用'eventemitter2',你需要使用'eventemitter2'類型 - 在這種情況下,你已經依賴了。 – cartant

+0

我的圖書館在內部使用eventemitter2來提供事件API,而不是重新發明輪子,所以它是一個開發部門。對於那些使用我的庫的UMD /捆綁版本的用戶,他們不會安裝任何開發工具。 – helion3