打字稿变量导出有什么区别

时间:2016-02-22 04:49:11

标签: module typescript export

使用打字稿我可以像这样导出变量:

export var Stuff= mongoose.model<IStuffModel>('Stuff', Schemas.stuffSchema);

我可以像import { Stuff } from '../models/stuff';

那样导入

或者那样:

var Stuff = mongoose.model<IStuffModel>('Stuff', Schemas.stuffSchema);

export = Stuff

我可以像import Stuff = require('../models/stuff');

那样导入

我也意识到进口方法不可互换。

所以第一个导出在export = Stuff不起作用,而第二个export var Stuff = ...

任何人都可以解释这种差异吗?

1 个答案:

答案 0 :(得分:3)

  

任何人都可以解释差异

出口

export =

这模拟了文件底部export的常见JavaScript模式。这对于各种模块系统是通用的,这是CommonJS / Node的一个例子:

module.exports = {
   // something
} 

export something

这将模拟要在声明点导出的JavaScript模式。例如。在commonjs / Node中:

module.exports.something = // something

进口

这是:

import Stuff = require('../models/stuff');

这是TypeScript添加的内容,允许用户在使用相同的TypeScript代码库时编译为amdcommonjs。不建议这样做了。

ES6

这是

import { Stuff } from '../models/stuff';

通过JavaScript标准化。这只是导入模式的一个,这里有 destructured 导入。

避免混淆

只需使用ES6导入/导出语法即可。这意味着不要做export =而不做import =。相反,始终export somethingimport ... from ...