我使用node.js,我最近决定给TypeScript一个镜头,但我对如何导入模块感到困惑。我看到两种不同的语法,我无法确切地知道它们的区别是什么:
import * as a from 'a'; // ES6 standard to import stuff
// OR ...
import a = require('a');
这些是一回事吗?如果他们不是,我应该在哪里使用它们?
答案 0 :(得分:12)
import * as a from 'a';
是新的“ES6样式”导入语法(自Typescript 1.5起可用)。
现在应该使用此语法。
但有一点需要注意。 ES6导入语法只能导入作为模块一部分导出的模块(由ES6定义)或对象(类,接口,变量,...)。
一些Javascript库将直接导出函数或类,相应的定义文件通常如下所示:
declare module "my-class" {
class MyClass { ... }
export = MyClass
}
在这种情况下,“旧”导入语法是唯一可以使用的语法
import MyClass = require("my-class");
未使用此语法将导致错误TS2497
检查this issue以获取详细信息以及可能的解决方法,在前一种情况下,将空模块声明添加到定义文件
declare module "my-class" {
class MyClass { ... }
module MyClass {} // <=
export = MyClass
}