2016-05-30 33 views
1

Aufgrund der fehlenden offiziellen d.ts-Datei für ein Slug-Modul, bekomme ich alle Arten von Fehler versuchen es zu arbeiten.Typ Deklarationsdatei und Anrufsignaturfehler

Zuerst, hier ist die Datei, wo ich das Modul importieren.

import * as slug from "slug" // Had to create a custom d.ts empty file to avoid compile error as no official definition file existed 

let slugify = function (data: string): string { 
    let slugified: string = slug('ééé aaa ooo') // error here 

    return slugified 

} 

export default slugify 

Und hier ist die leere d.ts Datei i Importfehlermeldung vom Compiler zu verhindern, zu schaffen hatte:

declare module "slug" { 

} 

neues Problem ist auf Butzen ('ééé aaa ooo'):

Wie kann ich das beheben? Sollte ich "gefälschten" Inhalt in die d.ts Datei einfügen?

+0

Statt des Imports versuchen Sie 'declar var slug' – MikeSW

Antwort

1

Der Compiler muss wissen, wie slug funktioniert, und Sie können es wissen lassen, indem Sie eine Deklaration dieser Funktion - etwas, das darstellt, wie Slug in JavaScript aussieht - aus dem Modul in der Definitionsdatei exportieren.

Hier ist eine Art und Weise tun:

declare module "slug" { 
    interface SlugOptions { 
     lower?: boolean; 
     // ...add the other options here... 
    } 

    function slug(val: string, optionsOrReplacement?: SlugOptions | string): string; 

    export = slug; 
} 

ich die einzige Art und Weise glaube, dass diese Bibliothek zu importieren ist require da es zu benutzen doesn't use ein benannte/default Export im js Code:

import slug = require("slug"); 
+0

danke, das ist eine ausgearbeitete Lösung, die den Job macht. Allerdings ging ich mit der einfachen Route, und stattdessen einen einfachen Import erforderlich. –