TypeScript
Importowanie bibliotek zewnętrznych
Szukaj…
Składnia
-
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
Uwagi
Może się wydawać, że składnia
import * as lib from 'libName';
i
import lib = require('libName');
są tym samym, ale nie są!
Rozważmy, że chcemy zaimportować klasę Person wyeksportowaną za pomocą składni export =
specyficznej dla TypeScript:
class Person {
...
}
export = Person;
W takim przypadku nie jest możliwe zaimportowanie go przy użyciu składni es6 (otrzymamy błąd w czasie kompilacji), należy użyć składni import =
specyficzna dla TypeScript.
import * as Person from 'Person'; //compile error
import Person = require('Person'); //OK
Odwrotnie jest prawda: klasyczne moduły można importować za pomocą drugiej składni, więc w pewnym sensie ostatnia składnia jest bardziej wydajna, ponieważ jest w stanie zaimportować wszystkie eksporty.
Aby uzyskać więcej informacji, zobacz oficjalną dokumentację .
Importowanie modułu z npm
Jeśli masz plik definicji typu (d.ts) dla modułu, możesz użyć instrukcji import
.
import _ = require('lodash');
Jeśli nie masz pliku definicji modułu, TypeScript zgłosi błąd podczas kompilacji, ponieważ nie może znaleźć modułu, który próbujesz zaimportować.
W tym przypadku, można zaimportować moduł z normalnym czasie pracy require
funkcji. Zwraca to jednak jako any
typ.
// The _ variable is of type any, so TypeScript will not perform any type checking.
const _: any = require('lodash');
Począwszy od TypeScript 2.0, można również użyć skróconej deklaracji modułu otoczenia , aby poinformować TypeScript, że moduł istnieje, gdy nie ma pliku definicji typu dla modułu. TypeScript nie będzie jednak w stanie zapewnić żadnego znaczącego sprawdzania typu w tym przypadku.
declare module "lodash";
// you can now import from lodash in any way you wish:
import { flatten } from "lodash";
import * as _ from "lodash";
Począwszy od TypeScript 2.1, zasady zostały jeszcze bardziej złagodzone. Teraz, dopóki moduł istnieje w katalogu node_modules
, TypeScript pozwoli ci go zaimportować, nawet bez deklaracji modułu w dowolnym miejscu. (Zauważ, że jeśli --noImplicitAny
opcji kompilatora --noImplicitAny
, poniżej wygeneruje ostrzeżenie).
// 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";
Znajdowanie plików definicji
dla maszynopisu 2.x:
definicje z DefinitelyTyped są dostępne za pośrednictwem pakietu @types npm
npm i --save lodash
npm i --save-dev @types/lodash
ale jeśli chcesz używać typów z innych repozytoriów, możesz użyć starego sposobu:
dla maszynopisu 1.x:
Typings to pakiet npm, który może automatycznie instalować pliki definicji typu w lokalnym projekcie. Zalecam przeczytanie przewodnika Szybki start .
npm install -global typings
Teraz mamy dostęp do pisania cli.
Pierwszym krokiem jest poszukiwanie pakietu używanego przez projekt
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
Następnie zdecyduj, z którego źródła chcesz zainstalować. Używam dt, co oznacza ZdecydowanieTyped repozytorium GitHub, w którym społeczność może edytować typy, jest to zwykle najnowsza aktualizacja.
Zainstaluj pliki z czcionkami
typings install dt~lodash --global --save
Podzielmy ostatnie polecenie. Instalujemy wersję definashaTyped lodash jako globalny plik pisma w naszym projekcie i zapisujemy go jako zależność w typings.json
. Teraz, gdziekolwiek zaimportujemy lodash, maszynopis załaduje plik tekstów.
Jeśli chcemy zainstalować typy, które będą używane tylko w środowisku programistycznym, możemy dostarczyć
--save-dev
:typings install chai --save-dev
Korzystanie z globalnych bibliotek zewnętrznych bez pisania
Chociaż moduły są idealne, jeśli do używanej biblioteki odwołuje się zmienna globalna (jak $ lub _), ponieważ została załadowana przez znacznik script
, możesz utworzyć deklarację otoczenia, aby się do niej odwoływać:
declare const _: any;
Znajdowanie plików definicji za pomocą maszynopisu 2.x
W wersjach maszynopisu 2.x pisanie jest teraz dostępne z repozytorium npm @types . Są one automatycznie rozwiązywane przez kompilator maszynopisu i są znacznie prostsze w użyciu.
Aby zainstalować definicję typu, po prostu zainstaluj ją jako zależność deweloperską w pakiecie.j.j
na przykład
npm i -S lodash
npm i -D @types/lodash
po instalacji po prostu korzystaj z modułu jak poprzednio
import * as _ from 'lodash'