我将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 is not a function
一样执行express();
时会出现错误。
简单的项目就在这里。
您需要在控制台中键入:
npm install
typings install
gulp clean,build
gulp run
看看我的意思。(应安装npm、typescript、gump)
如何更正Node4 支持的TypeScript到ES2015的转换
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选项来实现的。