Typescript不为具有内部模块的requirejs导出类

时间:2015-05-20 16:24:43

标签: requirejs typescript

打字稿:

import classModule = require("path/to/class");

module my.namespace {
  export class MyClass {
    constructor() {
       var someClass = new classModule.className();
    }
  }
}

生成的JAVASCRIPT:

define(["require", "exports", "path/to/class"], function (require, exports, classModule) {
    var my;
    (function (my) {
        var namespace;
        (function (namespace) {
            var MyClass = (function () {

                function MyClass () {

                    var someClass = classModule.className();

                }
                return MyClass ;
            })();
            namespace.MyClass = MyClass ;
        })(namespace = my.namespace || (my.namespace = {}));
    })(my || (my = {}));
});

所以,它不会导出" MyClass"所以导入它的模块无法使用它。

如果我删除打字稿

module my.namespace

它确实:

. . .
return MyClass;

})();
exports.MyClass= MyClass;

如何导出MyClass包装内部模块?

我可以手工导出,但我认为这应该有效。 我知道内部模块名称空间并不是最好的,但我在Typescript模块中包含了大量代码。我正在使用Visual Studio并为项目设置了AMD标志。打字稿1.4。我正在加载" MyClass"带有要求([" myclass"])电话。

1 个答案:

答案 0 :(得分:0)

如果要导出模块(及其内容),则需要export包含该类的模块。

但实际上,没有理由拥有顶级'命名空间'外部模块中的模块。请参阅"不必要的命名空间"在TypeScript Handbook