类型脚本导入/作为与导入/需要?

我在 Express/Node.js 中使用 TypeScript。

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

import express = require('express');

typescript.d.ts文件也显示:

import * as express from "express";

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

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

在哪里可以找到有关最新语法的信息,以便我将来可以找到这些信息?

173773 次浏览

这些基本上是等价的,但是 import *有一些 import ... = require没有的限制。

import * as创建的标识符是 模块对象,重点是 对象。根据 ES6规范,此对象从不可调用或 newable-它只具有属性。如果要导入函数或类,应该使用

import express = require('express');

或(取决于您的模块加载程序)

import express from 'express';

根据 ES6规范,尝试使用 import * as express然后调用 express()始终是非法的。在某些运行时 + 翻译环境中,这种情况可能会发生,但它可能在未来的任何时候在没有任何警告的情况下中断,这会让您感到沮丧。

import * as express from "express";

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

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