使用打字稿我可以像这样导出变量:
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 = ...
任何人都可以解释这种差异吗?
答案 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代码库时编译为amd
或commonjs
。不建议这样做了。
这是
import { Stuff } from '../models/stuff';
通过JavaScript标准化。这只是导入模式的一个,这里有 destructured 导入。
只需使用ES6导入/导出语法即可。这意味着不要做export =
而不做import =
。相反,始终export something
和import ... from ...
。