2014-02-17 2 views
0

내 코드에 외부 모듈 상황이 있습니다. 권장 사항 ("Needless namespacing"참조)에 따르면 불필요한 네임 스페이스를 피하고 어디에서나 모듈 선언을 제거하려고합니다. 이제 모듈의 함수 매개 변수가 모듈의 다른 함수 이름과 같을 때 명명 충돌이 발생했습니다. 그래서 나는 어떻게 든 호출 할 필요가있는 현재 모듈의 다른 함수 인 매개 변수가 아니라는 것을 컴파일러에게 말할 수 있기를 바랍니다. 고려하십시오 :TypeScript에서 익명 모듈을 어떻게 참조합니까?

function a() { 
} 
function b(a: {}) { 
    return a(); /// <--- a problem, I wish there was something like: module.a(); or global::a(); 
} 

이름을 변경하지 않고 어떻게 든이 문제를 극복 할 수있는 방법이 있습니까?

답변

0
function a() { 
} 
function b(a: {}) { 
    return this.a(); ///try using this 
} 

차라리 이런 식으로 할 게 좋을 것 : 모듈의 경우

module Testing { 
    class MyFuncs { 
     public a =() => { } 
     public b = (a: {}) => { return this.a()} 

    } 
} 
+0

글쎄,이 방법이 효과적 일지 모르지만, 'this'는 모든 결과와 함께'any' 타입이기 때문에이 해결 방법을 좋아하지 않습니다. –

+0

업데이트를 확인하십시오. 인텔리 센스가 있습니다. –

0

, 당신은 모듈 이름을 통해 액세스 할 수있는 a 기능을 수출합니다. 전역 항목의 경우 컴파일러가 추가 항목을 알 수 있도록 전역 루트를 나타내는 인터페이스를 확장해야합니다. 아래 둘 모두의 예를 보여주었습니다.

// Module 
module Example { 
    export function a() { 
     alert('A1'); 
    } 

    export function b(a: {}) { 
     Example.a(); /// <--- I wish there was something like: module.a(); 
    } 
} 

Example.b({}); 

// Global 
interface Window { 
    a:() => any; 
} 

function a() { 
    alert('A2'); 
} 

function b(a: {}) { 
    return window.a(); /// <--- I wish there was something like: global::a(); 
} 

b({}); 

당신을 위해이 작품의도는, 아마도 가능한 경우

클래스 멤버는 지역 변수와 매개 변수에서 그들을 구별하는 this 키워드를 사용하여 액세스와 같은 클래스의 방법을 포장 설계를 변경합니다.

관련 문제