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.

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

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

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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow