【发布时间】:2017-04-23 01:52:39
【问题描述】:
我在工作中一直在使用 TypeScript,我们使用 RequireJS 作为我们的 AMD 加载器,它运行良好。我想将我的一些个人 JS 库转换为 TypeScript,我想知道 - 是否可以使用 TypeScript 的内置模块系统来导出 global AND define 如果最终用户恰好在使用 require/amd?
我想避免破坏与现有用户的兼容性/强迫他们使用 Require。
我现有的 JS 文件的布局是这样的,它定义了一个全局 AND 如果定义了定义,则定义 TickerGraph:
var TickerGraph = (function () { …class code… });
if( typeof define == "function" ) {
define([], function() {
return TickerGraph;
});
}
在我的 TypeScript 重写中,我使用定义为 UMD 的模块类型进行了如下布局:
export = class TickerGraph { …class code… }
输出
(function (dependencies, factory) {
if (typeof module === 'object' && typeof module.exports === 'object') {
var v = factory(require, exports); if (v !== undefined) module.exports = v;
}
else if (typeof define === 'function' && define.amd) {
define(dependencies, factory);
}
})(["require", "exports"], function (require, exports) {
"use strict";
return (function () {
检查定义/导出但 NOT 定义一个全局...
我已经尝试过将 export 全部消除并一起导出全局,但当然不再定义。在这里的任何帮助将不胜感激。
【问题讨论】:
标签: typescript requirejs