在TypeScript中,从`import`和`import require`之间的区别

我使用node.js,最近我决定给TypeScript一个镜头,但我有点混淆模块如何导入。 我看到两种不同的语法,我无法确切地发现它们有什么不同:

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

这些都是一样的吗? 如果他们不是,我应该在哪里使用他们每一个?

import * as a from 'a'; 是新的“ES6样式”导入语法(从Typescript 1.5开始可用)。

只要有可能,现在应该使用这个语法。

有一个警告,但。 ES6导入语法只能导入作为模块一部分导出的模块(由ES6定义)或对象(类,接口,variables等)。

一些Javascript库会直接导出一个函数或类,相应的定义文件通常如下所示:

 declare module "my-class" { class MyClass { ... } export = MyClass } 

在这种情况下,“旧”导入语法是唯一可以使用的语法

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

未能使用此语法将导致错误TS2497

检查这个问题的细节和一个可能的解决方法,在以前的情况下,将一个空的模块声明添加到定义文件

 declare module "my-class" { class MyClass { ... } module MyClass {} // <= export = MyClass }