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;
});
答案 0 :(得分:1)
你有点&#34;一半&#34;使用模块。要做到这一点,要么不使用模块(删除export
),要么一致地使用它们(例如,使第二个脚本成为导入类的模块)。现在它就像半握手一样......
如果您要将库发布为TypeScript,请注意TypeScript处理模块(v1.8及更高版本),因此使用模块不会强制您的用户使用Webpack或类似内容; more in this blog post
如果您希望他们能够在不使用模块的情况下使用它,请不要在lib中使用模块。
答案 1 :(得分:0)
(window as any).yourInstanceName = new SomeClass();