Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Typescript导入/作为vs导入/需要?_Javascript_Node.js_Express_Typescript - Fatal编程技术网

Javascript Typescript导入/作为vs导入/需要?

Javascript Typescript导入/作为vs导入/需要?,javascript,node.js,express,typescript,Javascript,Node.js,Express,Typescript,我正在将TypeScript与Express/Node.js一起使用 对于消费模块,《TypeScript手册》显示了以下语法: import express=require('express') 但是typescript.d.ts文件也显示: 从“express”导入*为express 我也搜索了MSDN博客,但没有找到任何东西 截至2016年初,哪一个更正确?两者之间有什么区别(如果有的话) 哪里是查找最新语法信息的最佳来源,以便我将来可以找到这些信息?这些基本相同,但是import*有一些

我正在将TypeScript与
Express
/
Node.js
一起使用

对于消费模块,《TypeScript手册》显示了以下语法:

import express=require('express')

但是
typescript.d.ts
文件也显示:

从“express”导入*为express

我也搜索了MSDN博客,但没有找到任何东西

截至2016年初,哪一个更正确?两者之间有什么区别(如果有的话)


哪里是查找最新语法信息的最佳来源,以便我将来可以找到这些信息?

这些基本相同,但是
import*
有一些限制
import…=需要
不需要

import*as
创建作为模块对象的标识符,强调对象。根据ES6规范,此对象永远不可调用或
new
able-它只有属性。如果试图导入函数或类,则应使用

import express = require('express');
或(取决于您的模块加载器)

根据ES6规范,尝试将
import*用作express
,然后调用
express()
始终是非法的。在某些运行时+transpilation环境中,这可能会碰巧起作用,但将来可能会在没有警告的情况下在任何时候中断,这会让您感到难过

import * as express from "express";
这是建议的方法,因为自去年以来,它是JavaScript(ES6/2015)的标准


在任何情况下,在tsconfig.json文件中,您都应该将模块选项指向commonjs,这是nodejs支持的格式。

“一般来说,您应该使用ES6语法,除非您有理由不使用(我想不出任何即时的)“FWIW I In”。我对这里的明显矛盾感到有点困惑。我应该遵循哪些建议@CSnover您的建议在2016年的今天是否仍然像您发布时一样适用?谢谢。@AdamThompson是的,请参阅“2016更新”部分。在visual studio的源代码中,我发现他们编写了
import express=require('express')@Ryan Cavanaugh“取决于模块加载器”是什么意思?如何找到我拥有的模块加载器?谢谢。但这意味着
express
应该是导出的对象,被称为
express()
@Emobe没有意义。我发现,只有当您的ts.config具有“esModuleInterop”时,这才是真的:如果该标志设置为false,则express()似乎是有效的code@Sam有效但不干净。那样使用它是没有意义的。
import * as express from "express";