2016-08-15 3 views
2

私は、1つのライブラリが別のライブラリを拡張するいくつかのケースに遭遇しました。特に、ReactとReduxでの使用では特にそうでした。一例として、他のライブラリによって拡張された型スクリプト定義のオーバーライド

、私はこのように定義することができ機能をエクスポートJSライブラリを使用していたと言う。

function dispatch(action:IAction):void; 

interface IAction { 
    type: string; 
} 

そして私は、コールバックを許可するようにdispatch機能を強化し、他のJSライブラリを使用し、その可能性

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

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

問題は、2番目のライブラリが最初のライブラリを拡張するということです。これはどのようにタイピングで正しく表現できますか?それともそれはできますか?

答えて

0

だから、拡張ライブラリの宣言ファイルに元のライブラリを追加する必要があります。

redux-thunk declaration fileはほぼ同じです:それはreduxのDispatchインターフェイスを補強します。

詳細については、宣言ファイルがグローバルである必要があるかどうかによって、別のモジュールを補強したい場合は、異なる可能性についてはI wrote a more detailed answerを参照してください。または、typescriptハンドブックからpage on declaration mergingを見てください。

ご不明な点がございましたら、お手伝いします。

+0

これを消化しようとしています...私がRedux Thunkで持っている問題は、 "redux"から '{IDispatch}をインポートすると、redux-thunkの拡張については分かりません機能をアクションにすることができます。それは私が '{IDispatch}を"〜redux-thunk〜redux "からインポートする場合にのみ機能します。これは実際のモジュールではないので、何かをインポートする正しい方法がわかりません。 – Aaron

関連する問題