我正在使用TypeScript与Express
/ Node.js
。
对于使用模块,TypeScript手册显示以下语法:
import express = require('express');
但typescript.d.ts
文件也显示:
import * as express from "express";
我还搜索了MSDN博客但找不到任何内容。
截至2016年初,哪一个更正确?如果有的话,这两者之间有什么区别?
查找有关最新语法的信息的最佳来源在哪里,以便将来可以找到此信息?
答案 0 :(得分:98)
这些大致相当,但import *
有一些import ... = require
没有的限制。
import * as
创建一个模块对象的标识符,强调对象。根据ES6规范,此对象永远不可调用或new
能够 - 它只具有属性。如果您尝试导入函数或类,则应使用
import express = require('express');
或(取决于您的模块加载器)
import express from 'express';
根据ES6规范,尝试使用import * as express
然后调用express()
始终是非法的。在某些运行时+转换环境中,无论如何都可能会发生这种情况,但是在未来的任何时候它都可能会在没有警告的情况下中断,这会让你感到难过。
答案 1 :(得分:7)
import * as express from "express";
这是建议的方式,因为它是去年以来JavaScript(ES6 / 2015)的标准。
在任何情况下,在tsconfig.json文件中,您应该将模块选项定位到commonjs,这是nodejs支持的格式。