2016-04-04 11 views
5

Ich versuche, eine Typisierung Definition für pouch-redux-middleware, zu schreiben, die eine einzelne Funktion exportiert:Standardfunktion Exporttyp-Definition

import PouchMiddleware from 'pouch-redux-middleware' 

PouchMiddleware({...}) 

Hier ist die Typisierungen Definition habe ich:

interface PouchMiddleware { 
    (a: any): any; 
} 

declare var PouchMiddleware: PouchMiddleware; 

declare module "pouch-redux-middleware" { 
    export = PouchMiddleware; 
} 

Diese Ergebnisse im Fehler:

Module '"pouch-redux-middleware"' has no default export.

Was ist der richtige Weg, dies zu erklären?

Antwort

4

Für transpiling Module Commonjs, können Sie nur die Definitionsdatei ändern müssen zu:

declare function PouchMiddleware(a: any): any; 

declare module "pouch-redux-middleware" { 
    export = PouchMiddleware; 
} 

Dann importieren wie folgt:

import PouchMiddleware = require("pouch-redux-middleware"); 

Art saugt though. Jemand könnte mit einer besseren Antwort kommen.


Ich glaube, hier meine Antwort funktioniert nur für ES6 Targeting und das Modul als „ES2015“ -Einstellung:

You will need to compile with --allowSyntheticDefaultImports in order to get it to work and then change the interface in the definition file to a function:

declare function PouchMiddleware(a: any): any; 

declare module "pouch-redux-middleware" { 
    export = PouchMiddleware; 
} 

A similar thing happens with the react library. Read more here...

+0

Danke, obwohl mit der Option I 'bekommen Kann nicht Namen‚PouchMiddleware' finden, wenn Ich versuche es zu nennen. Die Fehlermeldungen von TypeScript sind einfach schrecklich..aber ich denke, in der Definition stimmt etwas nicht. – jgillich

+0

Hinzufügen von 'declare var PouchMiddleware: PouchMiddleware;' macht es kompilieren, scheitert aber zur Laufzeit: 'pouch_redux_middleware_1.default ist keine Funktion'. – jgillich

+0

Eigentlich funktioniert es auch nicht für reagieren. Hmm. – jgillich

0

Im Allgemeinen Sie folgende Struktur die Klasse mit exportieren und importieren können.

module pouch-redux-middleware { 
    export class pouch { 

    } 
} 

exportierte Klasse verwenden zu können, müssen Sie schreiben: -

import {pouch} from 'FileName' 

Grüße

Ajay

+0

Ich kann nicht ändern, was exportiert wird. – jgillich

+0

Wenn Sie eine .d.ts-Datei von pouch-redux-middleware erstellen und dann angular-material.d.ts-Datei für eine Beispieldatei verwenden möchten. Sie haben kein Mitglied in ihrer .d.ts-Datei exportiert. – Ajay

Verwandte Themen