为什么这2个NodeJS / Typescript导入会产生不同的结果?

时间:2019-05-15 16:23:07

标签: node.js typescript express node-modules require

在NodeJS项目中,我已经安装了typescript 3.2,express 4.16和@types/express 4.16

我正在用Typescript编写我的应用程序,以便稍后进行翻译。 @types/express的文档说要以这种方式导入和使用:

import * as express from "express";
const app = express();

但是,当我这样做时,第二行会引发错误,因为express不是函数(没有呼叫签名)。当我控制台日志express时,我得到一个具有application属性的对象

另一方面,如果我以这种方式导入和使用:

import express = require('express');
const app = express();

然后一切正常,控制台日志记录express显示了一个名为createApplication或类似功能的函数。该函数本身似乎具有与第一种方法相同的application属性。

有什么区别?

1 个答案:

答案 0 :(得分:1)

TypeScript@2.7开始,支持以下用于导入默认模块的语法:

import b from "bar";

您带有*的示例将导入模块的所有导出as a module object 但是你可能想要

import express from "express";
const app = express();