为什么这 2 个 NodeJS / Typescript 导入会给出不同的结果?
Why do these 2 NodeJS / Typescript imports give different results?
在一个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
属性。
有什么区别?
从 TypeScript@2.7 开始,支持以下导入默认模块的语法:
import b from "bar";
带有 * 的示例将导入模块的所有导出 as a module object
但你可能想要
import express from "express";
const app = express();
在一个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
属性。
有什么区别?
从 TypeScript@2.7 开始,支持以下导入默认模块的语法:
import b from "bar";
带有 * 的示例将导入模块的所有导出 as a module object 但你可能想要
import express from "express";
const app = express();