我将TypeScript转换为ES2015(因为我需要异步,等待),然后将ES2015转换为Node4支持的ES2015(Node4与ES2015不完全兼容)。
问题是express
的TypeScript定义不包含default
字段。但是这个字段实际上存在于Javascript代码中。 (实际上express
只是示例,例如,许多其他库bluebird
中存在问题)
所以,如果我导入import {default as express} from "express";
,那么我有编译TypeScript错误。如果我导入为import * as express from "express";
,那么在运行时执行express();
之类的express is not a function
时会出错。
简单项目是here。
您需要输入控制台:
npm install
typings install
gulp clean,build
gulp run
看看我的意思。 (应该安装npm,typescript,gulp)
如何纠正将TypeScript转换为Node4支持的ES2015
答案 0 :(得分:1)
express()
函数在概念上是express包的默认值。你总是想做
import express from "express";
// or this, which is identical, but longer.
import {default as express} from "express";
使用语法
import * as express from "express";
将导入模块的所有导出作为对象。如果你想使用它,那么你必须做
express.default();
正如您所说,第一个示例的问题是它可能导致TypeScript抛出类型错误。解决这个问题的最简单方法是告诉TypeScript在导入CommonJS模块时,对于什么是“默认”导出的期望更加灵活。这是通过在TypeScript编译器上启用--allowSyntheticDefaultImports选项来完成的。