typescript es6导入语法输出es5 commonjs模块问题

时间:2015-08-12 12:18:17

标签: knockout.js typescript commonjs

所以我遇到的问题是我正在尝试使用knockout-es5并输出到常见的js格式,但我正在使用es6语法编写所有内容。

现在我遇到的问题是我做了以下事情:

import ko from "knockout-es5";

希望通过tsc运行时的输出为:

var ko = require("knockout-es5");

然而,首先它不会编译因为knockout-es5描述符文件没有模块导出,所以我进去并在其末尾添加了以下内容:

declare var ko: KnockoutStatic; export module "knockout-es5" { export = ko; } 这看起来似乎有效,但是如果你看一下它被使用的输出它会使它ko.default.yourMethod而不是ko.yourMethod然后不起作用。

所以我有点困惑,因为我喜欢ES6语法,而且我的代码都是使用ES6导入和导出编写的,但由于我依赖于非ES6导出的模块,我似乎无法找到可行的中间层,我要么删除knockout默认导出并且输出文件中不包含require,或者我添加了默认导出并添加了default属性。

那么有没有办法让我的蛋糕在这里吃?

1 个答案:

答案 0 :(得分:1)

你可能想要

import * as ko from "knockout-es5";

您的原始导入与import {default as ko} from ...相同。

有关语法的全面说明,请参阅http://www.2ality.com/2014/09/es6-modules-final.html