2016-06-13 12 views
0

Ich übertrage ein Projekt auf Typescript und stoße auf ein Problem. Ich benutze eine Drittanbieter-Bibliothek react-async-script-loader, also schreibe ich eine Typdefinitionsdatei dafür. Die Bibliothek exportiert eine Komponente höherer Ordnung, aber ich habe Probleme, sie in der Typdefinitionsdatei auszudrücken.Typescript: Typdefinitionen für Komponenten höherer Ordnung

Hier ist die Datei, die ich jetzt haben:

declare module 'react-async-script-loader' { 
    import { Component } from 'react'; 

    class ElementClass extends Component<any, any> {} 

    interface ClassDecorator { 
    (component: ElementClass): ElementClass; 
    } 

    function scriptLoader(url: string): ClassDecorator; 

    export default scriptLoader; 
} 

ich die Funktion so etwas wie dieses bin Aufruf:

import * as scriptLoader from 'react-async-script-loader'; 

... 

export default scriptLoader(url)(MyComponent); 

Allerdings bin ich an der export default Anweisung diesen Fehler:

Ich kann nicht ganz verstehen, was das verursacht, da die Funktion ich Exportin bin g nimmt eine Zeichenfolge an und scheint eine Funktion zurückzugeben, die eine Komponente übernimmt und eine Komponente ausgibt.

Antwort

2

scriptLoader wird exportiert als default Export, aber Sie importieren mit einem Namespace-Import.

Versuchen Sie es zu einem default Import Ändern like in the docs:

import scriptLoader from "react-async-script-loader"; 
+0

, die den Trick tat! Klingt, als müsste ich auffrischen, wie Exporte funktionieren. Ich hatte den Eindruck, dass "import * als x aus" y "und" x von "y" importieren äquivalent waren. – jjwon

Verwandte Themen