2016-04-25 21 views
15

Ich schaute über das Typoskript-Handbuch und ich kann nicht die Antwort finden.Typoskript: Was tun, wenn eine Typisierung (oder tsd) nicht verfügbar ist?

Wenn ich eine Bibliothek verwende, die keine Typen gibt, was sind meine Optionen?

Einer ist, um die Typings-Datei zu erstellen, aber das möchte ich nicht wirklich tun.

Was sind meine anderen Optionen, ich erinnere mich an eine Art "declare" Schlüsselwort?

Oder vielleicht etwas in der tsconfig?

Ich nehme an, es gibt eine Möglichkeit, diese Variable (Typ) global zu deklarieren, also jedes Mal, wenn ich es benutze, würde es einfach funktionieren.

Und ich nehme an, es gibt eine Möglichkeit, es nur in einer einzigen Datei zu deklarieren.

Ich bin immer noch sehr verwirrt darüber.

Natürlich wäre der beste Weg, eine Typisierungsdatei hinzuzufügen, aber diese wird nicht immer verfügbar sein.

Jede Hilfe wirklich zu schätzen

Dank

Antwort

8

Wenn das primäre Anliegen nur um loszuwerden, die Fehler ist, können Sie einfach declare var MyUntypedLibrary: any; über Ihren Code schreiben, wo MyUntypedLibrary ist der Name des globalen Verweises auf Ihre Abhängigkeit.

Wenn Sie diese Referenz in mehreren Dateien benötigen und sich nicht wiederholen möchten, können Sie sie oben in jede Datei schreiben, über jeden Namespace, und sie wäre für das gesamte Projekt verfügbar. Wenn Sie viele nicht typisierte Abhängigkeiten haben, wäre es wahrscheinlich eine gute Idee, eine separate ts-Datei zu haben, in der Sie diese definieren.

Hinweis: Dies funktioniert gut, wenn lokale Module verwendet werden. Ich würde erraten Dies könnte mühsamer sein, wenn man externe Module verwendet und einen Platz haben möchte, um eine implizite Abhängigkeit für alle zu definieren, aber dann sollte jedes Modul intern seine eigenen Abhängigkeiten sowieso behandeln.

1

Obwohl die besten wäre es, auf Ihre eigene Definitionsdatei (.d.ts) klont die https://github.com/DefinitelyTyped/DefinitelyTyped Repository zu erstellen, hinzufügen und erstellen wieder eine Pull-Anforderung zu ihrem Stamm; Sie wollen hier eine schnellere Lösung.

Sie könnten Ihre eigene einfachste Definitionsdatei schreiben, die Ihrem Bedarf entspricht, und sie Ihrem Projekt hinzufügen, und Sie somit davon abhalten zu warten, dass Definitionen akzeptiert/gelesen werden, um in DefTyped Trunk zusammenzuführen.

auch immer Sie Ihre einfache def-Datei schreiben könnte, und erstellen Sie die Pull-Anforderung wie auch immer, kleine def Datei als keine def Datei besser ist;)

Zusätzliche Hinweise Ihre Definition zu erstellen: http://definitelytyped.org/guides/creating.html

Einfaches Beispiel:

interface JQuery { 

    /* wrapped plugins */ 

    dynatree(options: any): any; 

    multiselect(): JQuery; 
    multiselect(MultiSelectSettings): any; 
    multiselect(command: string): any; 

    ajaxSubmit(options: any); 
    layout(options: any); 

    colpick(options?: any); 
    colpickHide(); 

    idcDataTable(options?: any); 

    dragscrollable(options: any); 

    /* wrapped plugins - END */ 
} 

interface JQueryStatic { 
    layout: any; 

    fileDownload: any; 

    pnotify: any; 

    sha256(input: string): string; 
}