如何使用AMD模块生成TypeScript生成的代码,实际执行?

时间:2016-05-18 14:05:52

标签: typescript amd tsc typescript1.8

我刚开始使用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();
});

如何让编译器实际生成执行的代码?文档没有帮助。

1 个答案:

答案 0 :(得分:2)

不应使用选项--outFile。在浏览器中,AMD格式必须与异步加载器 RequireJS 一起使用。 RequireJS将根据需要加载多个生成的JavaScript文件。

此外,您需要在浏览器中加载RequireJS运行时。 Cf the documentation

注意:关于代码export namespace,建议不要混用名称空间和模块,请参阅this answer