我有一个TypeScript项目。基本上我有一个名为myId.ts
的文件:
export module MyModule {
export class MyId {
constructor() { ... }
public compareTo(other: MyId): number { ... }
public toString(): string { ... }
}
}
我有tsconfig.json
:
{
"compilerOptions": {
"target": "es5",
"noImplicitAny": true,
"removeComments": false,
"preserveConstEnums": true,
"sourceMap": false,
"module": "amd",
"outDir": "./out"
},
"files": [
"myId.ts"
]
}
我使用这个命令编译这个东西:
tsc --project .
当前目录包含配置文件ad,也包含源文件。
好吧,当编译一切都很好时,我得到out/myId.js
:
define(["require", "exports"], function (require, exports) {
var MyModule;
(function (MyModule) {
var MyId = (function () {
function MyId() { ... }
MyId.prototype.compareTo = function (other) { ... };
MyId.prototype.toString = function () { ... };
})();
MyModule.MyId = MyId;
})(MyModule = exports.MyModule || (exports.MyModule = {}));
});
MyId
好吧,我想在网页中使用它并使用JavaScript调用它,因此通过关注Require.JS guidelines,我创建了我的网页:
<html>
<head>
<meta charset="UTF-8">
<title>EVT Example - Minimal</title>
<script src="./require.js" type="text/javascript" data-main="./myId"></script>
</head>
<body></body>
</html>
但是,当我打开检查器(F12工具)并尝试引用MyModule.MyId
时,找不到任何东西!我如何参考我的类型?
检查员告诉我myId.js
实际上已成功加载。因此,Require.JS没有加载脚本这一事实并不是问题。
怎么办?
答案 0 :(得分:2)
当我打开检查器(F12工具)并尝试引用MyModule.MyId时,找不到任何东西!我如何引用我的类型
模块不是全局的,而是一件好事。因此,如果您输入MyModule.MyId
,则不会发生任何事情。
如果你想在控制台上访问它,可以把它放在窗口上,例如:
export module MyModule {
export class MyId {
constructor() { ... }
public compareTo(other: MyId): number { ... }
public toString(): string { ... }
}
}
(window as any).MyModule = MyModule;
然后你可以在控制台中执行MyModule.MyId
。当然,只有一个全局空间并且开始污染它是一个糟糕的想法(杀死了模块化可维护JavaScript的目的)。它可以用于测试