导入http = require('http'); 并从http导入*作为http;

我还没有find一个有价值的NodeJS与Typescript教程在那里,所以我在无人驾驶潜水,果然我有一个问题。

我不明白这两行之间的区别:

import * as http from 'http'; // and import http = require('http'); 

他们似乎以同样的方式运作,但我想他们的行为可能有一些细微差别,否则其中一个可能不存在。

我明白,第一种方法可以让我有select地从模块导入,但如果我导入所有的模块,那么两者之间有什么区别? 有没有一个首选的方式? 如果我从我自己的文件导入,这会改变什么吗?

在第一种forms中,你在你的代码中创build了一个http对象(完全干净),然后,解释器将在http模块中查找每个可能的导入,并将它们逐个添加到代码中的http对象,这是一个慢一点(不是很多),比你在http模块中定义的module.exports对象的第二种forms,然后复制这个引用到你的代码中的一个新的http对象,这是一个节点特殊函数的对象,具有特定的上下文,不仅是在你的代码中创build的对象与模块的内容。

而在您将模块typesconfiguration为通用JS的节点环境中,输出将是相同的。 其他模块框架将使用不同的语法,并通过使用第一种方法,您可以灵活地随意更改。

还有关于import * as http from 'http'; 方法是ES6模块导入语法,所以一旦您处于完全支持ES6的环境中,您的导入将会正常工作。