Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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
Javascript 编译typescript时避免使用全局函数_Javascript_Typescript_Obfuscation - Fatal编程技术网

Javascript 编译typescript时避免使用全局函数

Javascript 编译typescript时避免使用全局函数,javascript,typescript,obfuscation,Javascript,Typescript,Obfuscation,在将typescript编译为javascript时,如何避免创建全局函数 优点:混淆器不必提供公共API Foo.ts: class Foo {} Foo.js: var Foo = (function () { function Foo() { } return Foo; }()); Foo.obfuscated.js(使用npm jsobfuscator): Foo仍然可见。我理解为什么(公共API)。解决办法是: Foo.isolated.js: (funct

在将typescript编译为javascript时,如何避免创建全局函数

优点:混淆器不必提供公共API

Foo.ts:

class Foo {}
Foo.js:

var Foo = (function () {
    function Foo() {
    }
    return Foo;
}());
Foo.obfuscated.js(使用npm jsobfuscator):

Foo仍然可见。我理解为什么(公共API)。解决办法是:

Foo.isolated.js:

(function() { /* code from Foo.js */ })();
Foo.insolated.obfuscated.js(我想要什么):


是否有针对
tsconfig.js
/编译器选项的typescript设置,如
隔离:true
或其他什么?

将类包装在函数范围内应该可以实现这一点

(function(){
    class Foo {}
})
据我所知,没有选项形式的内置支持。如果执行上述操作无法实现您的目标,请告诉我-在这种情况下,有关目标的更多详细信息将帮助我们了解您的目标。

嵌套(私有)类


考虑使用模块,如果这对你来说太多了,只需使用一个自调用函数。
var _0xe1f1=[];var _0xa6a8=[];(function(){var _0x64f8x2=(function(){function _0x64f8x2(){}return _0x64f8x2}())})()
(function(){
    class Foo {}
})
module MyModule {
    export class MyPublicClass {
        private myPrivateClass: PrivateClass;
        constructor() {
            this.myPrivateClass = new PrivateClass;
        }
        public test() {
            this.myPrivateClass.test();
        }
    }

    class PrivateClass {
        public test() {
            console.log('it works');
        }
    }
}