一尘不染

打字稿导入/ as与导入/要求?

node.js

我将TypeScript与Express/一起使用Node.js

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

import express = require('express');

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

import * as express from "express";

我还搜索了MSDN博客,但找不到任何东西。

截至2016年初,哪个更正确?两者之间有什么区别(如果有)?

在哪里可以找到有关要使用的最新语法的信息的最佳来源,以便将来我可以找到此信息?


阅读 240

收藏
2020-07-07

共1个答案

一尘不染

这些大多是等效的,但import *有一些限制import ... = require不是。

import * as创建一个标识符,它是一个 模块对象 ,重点是 对象 。根据ES6规范,此对象永远不可调用或new不能执行-
它仅具有属性。如果您要导入函数或类,则应使用

import express = require('express');

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

import express from 'express';

根据ES6规范,尝试使用import * as express然后再调用express()始终是非法的。在某些运行时+转换环境中,这可能仍然会发生,但将来可能会在没有警告的情况下中断,这会让您感到悲伤。

2020-07-07