Node4使用gulp支持TypeScript到EcmaScript2015

时间:2016-07-22 11:38:25

标签: javascript node.js typescript ecmascript-6

我将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

1 个答案:

答案 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选项来完成的。