2016-06-09 1 views
3

J'ai essayé de créer le fichier suivant d.ts mais le type de l'élément est créé any:Comment déclarer une bibliothèque externe agissant comme une classe dactylographiée

declare module 'jszip' { 
    interface JSZip { 
    (): void 
    file (name: string, data: string, opts: any): void 
    folder (name: string): JSZip 
    } 
    const dummy: JSZip 
    export = dummy 
} 

Lorsque vous l'utilisez:

import * as JSZip from 'jszip' 

const zip = new JSZip() 
// zip type === any 

Quelle est la bonne façon de faire cela?

Répondre

4

Vous devez déclarer votre module en tant qu'interface avec la déclaration du constructeur.

declare module 'jszip' { 
    interface JSZipInterface { 
    (): void 
    file (name: string, data: string, opts: any): void 
    folder (name: string): JSZipInterface 
    } 

    interface JSZipConstructor { 
    new(): JSZipInterface 
    } 


    const module: JSZipConstructor 
    export = module 
} 

enter image description here