Node4使用gull支持TypeScript到EcmaScript2015



我将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选项来实现的。

最新更新