TypeScript
So verwenden Sie eine Javascript-Bibliothek ohne Typendefinitionsdatei
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