2017-03-02 3 views
1

in meinem TypeScript-Code Ich möchte ein NPM-JavaScript-Modul einschließen, für das es keine Typisierung gibt.Typoskript: Verwendung der lokalen Deklarationsdatei für das npm-Modul

import createPersist = require('vuex-localstorage'); 

Denn das von der Compiler beschwert sich:

error TS7016: Could not find a declaration file for module 'vuex-localstorage'. '<path>\node_modules\vuex-localstorage\dist\index.js' implicitly has an 'any' type. 

Eine Möglichkeit, dies zu lösen, ist "noImplicitAny"-false in meinem tsconfig.json Einstellung. Aber das will ich nicht. Ich möchte wissen, was nicht mehr überprüft wird.

Also schrieb ich eine minimale Typdeklaration für vuex-localstorage, die ich in meinem Projektverzeichnis gelegt:

interface PersistOptions { 
    namespace?: string; 
    initialState?: any; 
    provider?: any; 
    serialize?: (data:any) => string; 
    deserialize?: (str:string) => any; 
    expires?: number; 
    merge?: (args:any[]) => any; 
    reducer?: (state:any, paths:string[]) => any; 
    paths?: string[]; 
} 

declare function createPersist(options: PersistOptions): any; 

export = createPersist; 

Allerdings habe ich immer noch die gleichen Fehler. Ich habe mehrere Dinge ausprobiert, damit der TypeScript-Compiler meine Typdeklarationsdatei erkennt, aber nichts funktioniert.

Also, wie mache ich das?

Antwort

2

Sie müssen den Compiler wissen, dass das, was Sie geschrieben haben, für dieses Modul ist.

Try this:

declare module 'vuex-localstorage' { 
    interface PersistOptions { 
     namespace?: string; 
     initialState?: any; 
     provider?: any; 
     serialize?: (data: any) => string; 
     deserialize?: (str: string) => any; 
     expires?: number; 
     merge?: (args: any[]) => any; 
     reducer?: (state: any, paths: string[]) => any; 
     paths?: string[]; 
    } 

    function createPersist(options: PersistOptions): any; 

    export = createPersist; 
} 

Vergessen Sie nicht, um sicherzustellen, dass diese Erklärung Datei in tsconfig.json enthalten wird.

+0

Das hat es geschafft! Vielen Dank – jsf

Verwandte Themen