2017-11-16 1 views
1

typescript를 javascript로 컴파일 할 때 전역 함수 생성을 방지하려면 어떻게해야합니까?typescript 컴파일시 전역 함수 사용 안 함

장점 : NPM을 사용하여 (

var Foo = (function() { 
    function Foo() { 
    } 
    return Foo; 
}()); 

Foo.obfuscated.js :

class Foo {} 

Foo.js : 난독는 공개 API를

Foo.ts를 제공 할 필요가 없습니다 jsobfuscator) :

var _0xcd14=[];var _0x12e2=[];var Foo=(function(){function Foo(){}return Foo}()) 

푸는 여전히으로 표시됩니다. 내가 왜 (공공 API) 이해합니다. 해결 방법은 다음과 같습니다

Foo.isolated.js : (나는을 원하는 )

(function() { /* code from Foo.js */ })(); 

Foo.isolated.obfuscated.js :

var _0xe1f1=[];var _0xa6a8=[];(function(){var _0x64f8x2=(function(){function _0x64f8x2(){}return _0x64f8x2}())})() 

tsconfig.js에 대한 타이프 설정이 있습니까/isolation: true 같은 컴파일러 옵션이 있습니까?

+0

모듈을 사용하는 것이 좋습니다. 너무 많은 경우 자체 호출 기능을 사용하십시오. –

답변

1

클래스를 함수 범위 내에서 감싸는 것이 트릭을 수행해야합니다.

(function(){ 
    class Foo {} 
}) 

알고있는 한 옵션 형태로 지원 기능이 내장되어 있지 않습니다. 위의 작업을 수행해도 목표를 달성하지 못하면 알려주십시오. 목표가 정확히 무엇인지에 대한 세부 정보가 있으면 여기에서 수행 할 작업을 이해하는 데 도움이됩니다.

0

중첩 된 (개인) 클래스?

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'); 
     } 
    } 
}