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。
所以我遇到的问题是我正在尝试使用 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。