2016-08-15 2 views
2

Ich habe mehrere Fälle kennengelernt, in denen eine Bibliothek eine andere Bibliothek erweitert, insbesondere in meinen Anwendungen mit React und Redux.Überschreiben von TypeScript-Definitionen, die von anderen Bibliotheken erweitert wurden

Als Beispiel sagen, ich bin eine JS-Bibliothek, die eine Funktion ausgeführt, die wie folgt definiert werden:

function dispatch(action:IAction):void; 

interface IAction { 
    type: string; 
} 

Und ich eine andere JS-Bibliothek, die die dispatch Funktion verbessert die Rückrufe zu ermöglichen, die geeignet ist, wie folgt definiert werden:

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

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

Das Problem ist, dass die zweite Bibliothek die erste Bibliothek erweitert. Wie kann dies in Typisierungen richtig ausgedrückt werden? Oder kann es sein?

Antwort

0

Also, was Sie tun würden, ist die Deklarationsdatei der erweiternden Bibliothek 'erweitern' die ursprüngliche Bibliothek.

Die redux-thunk declaration file ist fast genau das: es erweitert die Dispatch Schnittstelle von Redux.

Für weitere Informationen, I wrote a more detailed answer zu den verschiedenen Möglichkeiten, wenn Sie ein anderes Modul erweitern möchten, abhängig davon, ob Ihre Deklarationsdatei global sein muss. Oder werfen Sie einen Blick auf das page on declaration merging aus dem Typoskript-Handbuch.

Wenn Sie weitere Fragen haben, bin ich glücklich zu helfen.

+0

Danke, immer noch versuchen, dies zu verdauen ... das Problem, das ich hier mit Redux Thunk habe, ist, dass, wenn ich {IDispatch} von "Redux" importiere, es nicht über die Redux-Thunk-Erweiterung zu wissen scheint damit Funktionen Aktionen sein können. Es funktioniert nur, wenn ich {IDispatch} von "~ redux-thunk ~ redux" importiere, was seltsam ist, und ich bin nicht sicher, ob es richtig ist, etwas zu importieren, da das kein echtes Modul ist. – Aaron

Verwandte Themen