我正在使用带有Express/Node.js的TypeScript。
对于使用模块,TypeScript手册显示了以下语法:
import express = require('express');
而且typescript.d.ts文件还显示:
import * as express from "express";
我也搜索了MSDN博客,但什么也找不到。
截至2016年初,哪一个更正确?这两者之间有什么区别吗?
哪里是查找最新语法信息的最佳来源,这样我将来就可以找到这些信息?
发布于 2016-03-01 01:58:08
它们基本上是等价的,但是import *有一些import ... = require没有的限制。
import * as创建了一个标识符,它是一个模块对象,重点是object。根据ES6规范,这个对象永远不是callable或new可调用的--它只有属性。如果您正在尝试导入函数或类,则应使用
import express = require('express');或者(取决于您的模块加载器)
import express from 'express';根据ES6规范,尝试使用import * as express然后调用express()始终是非法的。在一些runtime+transpilation环境中,这可能会发生,但它可能会在未来的任何时候中断,而不会发出警告,这将使您感到悲伤。
发布于 2016-03-01 02:06:57
import * as express from "express";这是推荐的方式,因为这是自去年以来JavaScript (ES6/2015)的标准。
在任何情况下,在您的tsconfig.json文件中,您应该将模块选项指定为commonjs,这是nodejs支持的格式。
https://stackoverflow.com/questions/35706164
复制相似问题