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

typescript es6 import syntax output es5 commonjs module issue

所以我遇到的问题是我正在尝试使用 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 导出模块我似乎无法找到可行的中间立场,我要么删除淘汰赛默认导出并且输出文件中不包含要求,要么我添加默认导出并添加 default 属性.

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

你可能想要

import * as ko from "knockout-es5";

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

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