Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 有没有办法在闭包中创建TypeScript类?_Class_Typescript_Closures_Javascript Namespaces - Fatal编程技术网

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

Class 有没有办法在闭包中创建TypeScript类?,class,typescript,closures,javascript-namespaces,Class,Typescript,Closures,Javascript Namespaces,我正在使用IntelliJ IDEA的File Watcher自动编译TypeScript文件,但出于某些原因,它不喜欢在块/函数闭包中定义的类: 有没有一种方法可以解决这个问题,而不必将所有内容都移动到顶级/全局范围?如果不从模块/文件导出类,它将不会全局可见,也就是说,没有理由将类定义包含在函数范围中 关于TS中模块的更多信息:如果不从模块/文件导出类,它将不会全局可见,即没有理由将类定义包含在函数范围中 关于TS中模块的更多信息:在TypeScript中使用以下代码会产生与您所期望的几乎

我正在使用IntelliJ IDEA的File Watcher自动编译TypeScript文件,但出于某些原因,它不喜欢在块/函数闭包中定义的类:


有没有一种方法可以解决这个问题,而不必将所有内容都移动到顶级/全局范围?

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


关于TS中模块的更多信息:

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


关于TS中模块的更多信息:

在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 = {}));

如果您真的想缩小范围,请切换到外部模块(现在称为“模块”)。

在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 = {}));

如果您真的想缩小范围,请切换到外部模块(现在又称为“模块”)

True,但是如果同一范围内有一个对象存储了对类的引用,那么它会暴露在全局范围中,对吗?(见问题中的截图)(续)啊,我想我明白你现在在说什么了。以我设置的方式存储对类的引用是毫无意义的,这项工作是通过在模块中定义它来完成的,基本上是正确的?正确的,您仍然在考虑JS,而您应该考虑TS(以及ES6)是如何工作的。是的,但是如果在同一范围内有一个对象存储对类的引用,该怎么办,然后它会暴露在全局范围内,对吗?(见问题中的截图)(续)啊,我想我明白你现在在说什么了。以我设置类的方式存储对类的引用是毫无意义的,这项工作是通过在模块中定义它来完成的,基本上是正确的,您仍然在考虑JS,而您应该考虑TS(以及ES6)是如何工作的。