Suche…


Einführung

Während einige vorhandene JavaScript - Bibliotheken haben Typ - Definitionsdateien , gibt es viele , die dies nicht tun.

TypeScript bietet einige Muster, um fehlende Deklarationen zu behandeln.

Deklarieren Sie eine beliebige globale

Es ist manchmal am einfachsten zu erklären nur einen globalen Typ any , vor allem in einfachen Projekten.

Wenn jQuery keine Typdeklarationen hatte ( es tut dies ), könnten Sie dies tun

declare var $: any;

Jetzt wird jeder Einsatz von $ eingegeben wird any .

Erstellen Sie ein Modul, das einen Standardwert exportiert

Bei komplizierteren Projekten oder wenn Sie schrittweise eine Abhängigkeit eingeben möchten, kann es einfacher sein, ein Modul zu erstellen.

Verwenden Sie JQuery als Beispiel (obwohl es Typisierungen zur Verfügung hat ):

// place in jquery.d.ts
declare let $: any;
export default $;

Und dann können Sie diese Definition in einer beliebigen Datei in Ihrem Projekt importieren mit:

// some other .ts file
import $ from "jquery";

Nach diesem Import wird $ als any eingegeben.

Wenn die Bibliothek über mehrere Variablen der obersten Ebene verfügt, exportieren und importieren Sie stattdessen nach Namen:

// place in jquery.d.ts
declare module "jquery" {
   let $: any;
   let jQuery: any;

   export { $ };
   export { jQuery };
}

Sie können dann beide Namen importieren und verwenden:

// some other .ts file
import {$, jQuery} from "jquery";

$.doThing();
jQuery.doOtherThing();

Verwenden Sie ein Umgebungsmodul

Wenn Sie nur die Absicht eines Imports angeben möchten (also kein globales Objekt deklarieren möchten) und keine expliziten Definitionen verwenden möchten, können Sie ein Umgebungsmodul importieren.

// in a declarations file (like declarations.d.ts)
declare module "jquery";    // note that there are no defined exports

Sie können dann aus dem Umgebungsmodul importieren.

// some other .ts file
import {$, jQuery} from "jquery";

Alles, was aus dem deklarierten Modul (wie $ und jQuery ) oben importiert wurde, hat den Typ any



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow