Javascript Typescript导入/作为vs导入/需要?
我正在将TypeScript与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*有一些
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";