我刚开始使用TypeScript,我制作了2个文件,lib.ts和main.ts,并在编译期间选择了AMD模块。编译器生成一个带有定义的文件,但它实际上并不调用任何要执行的函数。 main.ts文件的内容只包含在一个模块中。 以下是文件:
lib.ts
export namespace Library {
export class Write {
constructor() {
console.log("hello world");
}
}
}
main.ts
import {Library} from "./lib";
new Library.Write();
编译器命令:
tsc main.ts --outFile out.js --module amd
out.js
define("lib", ["require", "exports"], function (require, exports) {
"use strict";
var Library;
(function (Library) {
var Write = (function () {
function Write() {
console.log("hello world");
}
return Write;
}());
Library.Write = Write;
})(Library = exports.Library || (exports.Library = {}));
});
define("main", ["require", "exports", "lib"], function (require, exports, lib_1) {
"use strict";
new lib_1.Library.Write();
});
如何让编译器实际生成执行的代码?文档没有帮助。
答案 0 :(得分:2)
不应使用选项--outFile
。在浏览器中,AMD格式必须与异步加载器 RequireJS 一起使用。 RequireJS将根据需要加载多个生成的JavaScript文件。
此外,您需要在浏览器中加载RequireJS运行时。 Cf the documentation。
注意:关于代码export namespace
,建议不要混用名称空间和模块,请参阅this answer。