我还没有找到一个有价值的 NodeJS with Typescript 教程,所以我在无指导的情况下潜入水中,果然我有一个问题。
我不明白这两行之间的区别:
import * as http from 'http';
// and
import http = require('http');
它们似乎以相同的方式运作,但我想它们的行为可能有一些细微差别,否则其中一个可能不存在。
我明白第一种方法可以让我有选择地从一个模块导入,但是如果我要导入所有模块,那么两者之间有区别吗?有首选方法吗?如果我从我自己的文件中导入,那会改变什么吗?
原文由 Corey Ogburn 发布,翻译遵循 CC BY-SA 4.0 许可协议
在第一种形式中,您在代码中创建一个 http 对象(完全干净),然后,解释器将在 http 模块中查找每个可能的导入,并将其逐个附加到代码中的 http 对象,这是一个比获取 http 模块中定义的 module.exports 对象的第二种形式稍慢(不多),然后将此引用复制到代码中的新 http 对象,这是具有特定上下文的节点特殊函数中的对象,不仅是在您的代码中创建的对象,还包含模块的内容。