有没有办法在闭包中创建TypeScript类?

时间:2016-05-11 13:05:26

标签: class typescript closures javascript-namespaces

我正在使用IntelliJ IDEA的文件监视器来自动编译TypeScript文件,但由于某种原因,它不喜欢在块/函数闭包中定义的类:

enter image description here

有没有办法绕过这个而不必将所有东西都移到顶级/全球范围?

2 个答案:

答案 0 :(得分:2)

在TypeScript中使用以下代码会导致实际上与您的目标相同的JavaScript ...

namespace MY_NAMESPACE {
    export class AssetService {

    }
}

结果代码:

var MY_NAMESPACE;
(function (MY_NAMESPACE) {
    var AssetService = (function () {
        function AssetService() {
        }
        return AssetService;
    }());
    MY_NAMESPACE.AssetService = AssetService;
})(MY_NAMESPACE || (MY_NAMESPACE = {}));

如果你想真的缩小范围,请切换到外部模块(AKA"模块"这些天)。

答案 1 :(得分:1)

如果你不从模块/文件中导出类,它将不会全局可见,即没有理由在类函数范围内包含类定义。

有关TS中模块的更多信息:https://www.typescriptlang.org/docs/handbook/modules.html