Buscar..


Sintaxis

  • 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

Observaciones

Podría parecer que la sintaxis

import * as lib from 'libName';

y

import lib = require('libName');

son lo mismo, pero no lo son!

Consideremos que queremos importar una clase Persona exportada con sintaxis export = específica de TypeScript:

class Person {
...
}
export = Person;

En este caso, no es posible importarlo con la sintaxis es6 (obtendríamos un error en el momento de la compilación), se debe utilizar la sintaxis import = específica de TypeScript.

import * as Person from 'Person';  //compile error
import Person = require('Person');  //OK

Lo contrario es cierto: los módulos clásicos se pueden importar con la segunda sintaxis, por lo que, de alguna manera, la última sintaxis es más poderosa ya que es capaz de importar todas las exportaciones.

Para más información ver la documentación oficial .

Importando un módulo desde npm

Si tiene un archivo de definición de tipo (d.ts) para el módulo, puede usar una declaración de import .

import _ = require('lodash');

Si no tiene un archivo de definición para el módulo, TypeScript generará un error en la compilación porque no puede encontrar el módulo que está intentando importar.

En este caso, puede importar el módulo con el tiempo de ejecución normal, require la función. Esto lo devuelve como any tipo, sin embargo.

// The _ variable is of type any, so TypeScript will not perform any type checking.
const _: any = require('lodash');

A partir de TypeScript 2.0, también puede usar una declaración abreviada del módulo ambiental para indicar a TypeScript que existe un módulo cuando no tiene un archivo de definición de tipo para el módulo. Sin embargo, TypeScript no podrá proporcionar ninguna comprobación de tipo significativa en este caso.

declare module "lodash";

// you can now import from lodash in any way you wish:
import { flatten } from "lodash";
import * as _ from "lodash";

A partir de TypeScript 2.1, las reglas se han relajado aún más. Ahora, mientras exista un módulo en su directorio node_modules , TypeScript le permitirá importarlo, incluso sin ninguna declaración de módulo en ningún lugar. (Tenga en cuenta que si utiliza la opción del compilador --noImplicitAny , lo siguiente seguirá generando una advertencia).

// 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";

Buscando archivos de definición

para mecanografia 2.x:

las definiciones de DefinitelyTyped están disponibles a través del paquete @types npm

npm i --save lodash
npm i --save-dev @types/lodash

pero en el caso de que desee utilizar tipos de otros repositorios, entonces puede usarlos de forma antigua:

para mecanografia 1.x:

Typings es un paquete npm que puede instalar automáticamente archivos de definición de tipo en un proyecto local. Te recomiendo que leas el inicio rápido .

npm install -global typings

Ahora tenemos acceso a las tipografías cli.

  1. El primer paso es buscar el paquete utilizado por el proyecto.

    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. Luego decide de qué fuente deberías instalar. Utilizo dt, que significa DefinitelyTyped, un repositorio de GitHub en el que la comunidad puede editar las tipografías, normalmente también es la más reciente.

  3. Instala los archivos de mecanografía.

     typings install dt~lodash --global --save
    

Vamos a romper el último comando. Estamos instalando la versión DefinitelyTyped de lodash como un archivo de mecanografía global en nuestro proyecto y guardándolo como una dependencia en typings.json . Ahora, dondequiera que importemos lodash, typScript cargará el archivo de tipificaciones de lodash.

  1. Si queremos instalar las tipificaciones que se usarán solo para el entorno de desarrollo, podemos proporcionar el --save-dev :

     typings install chai --save-dev
    

Usando bibliotecas externas globales sin tipografías

Aunque los módulos son ideales, si una biblioteca global hace referencia a la biblioteca que está utilizando (como $ o _), ya que se cargó con una etiqueta de script , puede crear una declaración de ambiente para referirse a ella:

declare const _: any;

Buscando archivos de definición con mecanografiado 2.x

Con las versiones 2.x de mecanografiado, las mecanografías ahora están disponibles en el repositorio npm @types . Estos son resueltos automáticamente por el compilador de mecanografía y son mucho más fáciles de usar.

Para instalar una definición de tipo, simplemente instálala como una dependencia de desarrollo en tus proyectos package.json

p.ej

npm i -S lodash
npm i -D @types/lodash

después de la instalación simplemente utiliza el módulo como antes

import * as _ from 'lodash'


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow