2016-08-15 71 views
2

我遇到過幾種情況,其中一個庫擴展了另一個庫,特別是在我與React和Redux的使用中。覆蓋由其他庫擴展的TypeScript定義

舉個例子,說我使用的是出口,可以這樣來定義一個函數JS庫:

function dispatch(action:IAction):void; 

interface IAction { 
    type: string; 
} 

我用另一個JS庫,增強了dispatch功能允許回調,這可能定義如下:

function dispatch(action:IAction | IActionCallback):void; 

interface IActionCallback { 
    (dispatch:IDispatch):void; 
} 

問題是第二個庫增加了第一個庫。這怎麼能夠在類型中正確表達?或者它可以嗎?

回答

0

所以你要做的是擴展庫的聲明文件'擴充'原始庫。

redux-thunk declaration file確實如此:它增加了redux的Dispatch接口。

欲瞭解更多信息,I wrote a more detailed answer上,如果你想增加另外一個模塊,這取決於你的聲明文件是否需要是全球性的不同的可能性。或者看看打字手冊中的page on declaration merging

如果您還有其他問題,我很樂意提供幫助。

+0

謝謝,仍在努力消化這...我在這裏與終極版咚的問題是,如果'進口{}的IDispatch從「終極版」'似乎我不知道了Redux-的thunk增強讓功能成爲行動。它僅適用,如果我'進口{}的IDispatch從「〜終極版-的thunk〜終極版」'這是奇怪的,我不知道進口的東西以正確的方式,因爲這是不是一個真正的模塊。 – Aaron