将类暴露给global,typescript

时间:2017-10-15 14:28:27

标签: javascript typescript

SomeClass.ts:

  export class SomeClass{
      constructor(){} 

    }

的index.html:

<script src="SomeClass.js"></<script> // compiled to es5
<script>
  var someClass = new SomeClass(); //SomeClass is not defined
</script>

我正在运行es5所以我不能做任何重要的事情。

在普通的javascript中你可以这样做:

(function(global){
    function SomeClass() {

    }
    global.IfcModel = IfcModel;
})(window);

如何在窗口中的typescript中公开类?

已编译的js文件:

(function (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(["require", "exports"], factory);
    }
})(function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var SomeClass = /** @class */ (function () {
        function SomeClass() {
        }
        return SomeClass;
    }());
    exports.SomeClass = SomeClass;
});

2 个答案:

答案 0 :(得分:1)

你有点&#34;一半&#34;使用模块。要做到这一点,要么不使用模块(删除export),要么一致地使用它们(例如,使第二个脚本成为导入类的模块)。现在它就像半握手一样......

如果您要将库发布为TypeScript,请注意TypeScript处理模块(v1.8及更高版本),因此使用模块不会强制您的用户使用Webpack或类似内容; more in this blog post

如果您希望他们能够在不使用模块的情况下使用它,请不要在lib中使用模块。

答案 1 :(得分:0)

(window as any).yourInstanceName = new SomeClass();
相关问题