Typescript导入/作为vs导入/要求?

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

对于使用模块,TypeScript手册显示以下语法:

import express = require('express');

而且typescript.d.ts文件显示:

import * as express from "express";

我也search了MSDN博客,但找不到任何东西。

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

哪里是最好的来源,find最新的语法信息使用,所以我可以在未来find这个信息?

这些大部分是等价的,但是import *有一些限制, import ... = require不。

import * as创build一个标识符,它是一个模块对象 ,强调对象 。 根据ES6规范,这个对象永远不可调用或者是new – 它只有属性。 如果你正试图导入一个函数或类,你应该使用

 import express = require('express'); 

或(取决于你的模块加载器)

 import express from 'express'; 

尝试使用import * as express ,然后调用express()总是违法的,根据ES6规范。 在某些运行时+转译环境中,这可能会发生作用,但是在未来的任何时候都可能会突然中断,这会让你感到难过。

 import * as express from "express"; 

这是build议的做法,因为它是去年以来的JavaScript标准(ES6 / 2015)。

在任何情况下,在你的tsconfig.json文件中,你都应该将模块选项定位到nodejs支持的格式commonjs。