TypeScript
Externe Bibliotheken importieren
Suche…
Syntax
-
import {component} from 'libName'; // Will import the class "component"
-
import {component as c} from 'libName'; // Will import the class "component" into a "c" object
-
import component from 'libname'; // Will import the default export from libName
-
import * as lib from 'libName'; // Will import everything from libName into a "lib" object
-
import lib = require('libName'); // Will import everything from libName into a "lib" object
-
const lib: any = require('libName'); // Will import everything from libName into a "lib" object
-
import 'libName'; // Will import libName module for its side effects only
Bemerkungen
Es könnte scheinen, dass die Syntax
import * as lib from 'libName';
und
import lib = require('libName');
sind dasselbe, aber nicht!
Betrachten wir , dass wir eine Klasse Person exportiert mit Typoskript spezifischen importieren möchten export =
Syntax:
class Person {
...
}
export = Person;
In diesem Fall ist ein Import mit es6-Syntax nicht möglich (wir würden zur Kompilierzeit einen Fehler erhalten). TypScript-spezifische import =
-Syntax muss verwendet werden.
import * as Person from 'Person'; //compile error
import Person = require('Person'); //OK
Das Gegenteil ist der Fall: Klassische Module können mit der zweiten Syntax importiert werden. Die letzte Syntax ist gewissermaßen leistungsfähiger, da sie alle Exporte importieren kann.
Weitere Informationen finden Sie in der offiziellen Dokumentation .
Ein Modul von npm importieren
Wenn Sie eine Typdefinitionsdatei (d.ts) für das Modul haben, können Sie eine import
.
import _ = require('lodash');
Wenn Sie keine Definitionsdatei für das Modul haben, gibt TypeScript bei der Kompilierung einen Fehler aus, da das zu importierende Modul nicht gefunden wird.
In diesem Fall können Sie das Modul mit der normalen Laufzeit importieren require
Funktion. Dies gibt es jedoch als any
Typ zurück.
// The _ variable is of type any, so TypeScript will not perform any type checking.
const _: any = require('lodash');
Ab TypeScript 2.0 können Sie auch eine Umgebungsmoduldeklaration verwenden, um TypeScript mitzuteilen, dass ein Modul vorhanden ist, wenn Sie keine Typdefinitionsdatei für das Modul haben. In diesem Fall kann TypeScript jedoch keine aussagekräftige Typüberprüfung liefern.
declare module "lodash";
// you can now import from lodash in any way you wish:
import { flatten } from "lodash";
import * as _ from "lodash";
Seit TypeScript 2.1 wurden die Regeln noch weiter gelockert. Solange ein Modul in Ihrem Verzeichnis node_modules
vorhanden ist, können Sie es node_modules
mit TypeScript importieren, auch wenn keine Moduldeklaration vorliegt. (Beachten Sie, dass bei Verwendung der Compileroption --noImplicitAny
die folgende --noImplicitAny
immer noch eine Warnung generiert.)
// Will work if `node_modules/someModule/index.js` exists, or if `node_modules/someModule/package.json` has a valid "main" entry point
import { foo } from "someModule";
Definitionsdateien suchen
für Typoskript 2.x:
Definitionen von DefinitelyTyped sind über das @types npm- Paket verfügbar
npm i --save lodash
npm i --save-dev @types/lodash
Falls Sie jedoch Typen von anderen Repos verwenden möchten, können Sie die alte Methode verwenden:
für Typoskript 1.x:
Typings ist ein npm-Paket, mit dem Typendefinitionsdateien automatisch in einem lokalen Projekt installiert werden können. Ich empfehle Ihnen, den Schnellstart zu lesen.
npm install -global typings
Nun haben wir Zugriff auf die Typisierungen cli.
Der erste Schritt besteht darin, nach dem vom Projekt verwendeten Paket zu suchen
typings search lodash NAME SOURCE HOMEPAGE DESCRIPTION VERSIONS UPDATED lodash dt http://lodash.com/ 2 2016-07-20T00:13:09.000Z lodash global 1 2016-07-01T20:51:07.000Z lodash npm https://www.npmjs.com/package/lodash 1 2016-07-01T20:51:07.000Z
Dann entscheiden Sie, aus welcher Quelle Sie installieren sollen. Ich verwende dt, was für DefinitelyTyped steht, ein GitHub-Repo, in dem die Community Typisierungen bearbeiten kann. Normalerweise wird auch das zuletzt aktualisiert.
Installieren Sie die Typisierungsdateien
typings install dt~lodash --global --save
Brechen wir den letzten Befehl auf. Wir installieren die DefinitelyTyped-Version von lodash als globale Typisierungsdatei in unserem Projekt und speichern sie als Abhängigkeit in der typings.json
. Wo immer wir lodash importieren, lädt typscript die lodash-Typisierungsdatei.
Wenn Sie Typisierungen installieren möchten, die nur für die Entwicklungsumgebung verwendet werden, können Sie das
--save-dev
:typings install chai --save-dev
Verwendung globaler externer Bibliotheken ohne Typisierung
Obwohl Module ideal sind, können Sie, wenn auf die von Ihnen verwendete Bibliothek durch eine globale Variable (wie $ oder _) verwiesen wird, da sie durch ein script
geladen wurde, eine Umgebungsdeklaration erstellen, um darauf zu verweisen:
declare const _: any;
Definitionsdateien mit Typoscript 2.x suchen
Mit den 2.x-Versionen von Typescript sind jetzt Typisierungen im Repository npm @types verfügbar. Diese werden vom Typenscript-Compiler automatisch aufgelöst und sind viel einfacher zu verwenden.
Um eine Typdefinition zu installieren, installieren Sie sie einfach als dev-Abhängigkeit in Ihrer Projekte package.json
z.B
npm i -S lodash
npm i -D @types/lodash
Nach der Installation verwenden Sie das Modul einfach wie zuvor
import * as _ from 'lodash'