Búsqueda de sitios web

node.js - Diferencia entre `import from` y `import require` en TypeScript


Uso node.js y recientemente decidí probar TypeScript, pero estoy un poco confundido sobre cómo se importan los módulos. Veo dos sintaxis diferentes que no pude averiguar cuál es su diferencia exactamente:

import * as a from 'a'; // ES6 standard to import stuff
// OR ...
import a = require('a');

¿Son lo mismo? y si no lo son, ¿dónde debería usar cada uno de ellos?

Respuesta #1

import * as a from 'a'; es la nueva sintaxis de importación "estilo ES6" (disponible desde Typescript 1.5).

Siempre que sea posible, esta sintaxis ahora debe ser utilizada.

Sin embargo, hay una advertencia. La sintaxis de importación de ES6 solo puede importar módulos (tal como los define ES6) u objetos (clases, interfaces, variables, ...) exportados como parte de un módulo.

Algunas bibliotecas de Javascript exportarán directamente una función o clase, y el archivo de definición correspondiente normalmente se verá así:

declare module "my-class" {

    class MyClass { ... }

    export = MyClass
} 

En este caso, la sintaxis de importación "antigua" es la única que se puede utilizar

import MyClass = require("my-class");

El no usar esta sintaxis resultará en el error TS2497

Consulta este problema para obtener detalles y una posible solución, que en el caso anterior sería agregar una declaración de módulo vacía al archivo de definición

declare module "my-class" {

    class MyClass { ... }

    module MyClass {} // <=

    export = MyClass
} 

Artículos relacionados