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.

  1. 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
    
  2. 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.

  3. 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.

  1. 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'


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