2015-01-14 3 views
4

내가 인터페이스를 보낸 고려인터페이스 이름을 문자열로 가져올 수 있습니까?

export interface IMyAngularService{ 
} 

우리는 우리가 일반적으로 등록 된 서비스의 이름 또는 단순히 문자열 추론 함수 이름을 사용하는 서비스 나 공장 (예를 들어, 'ISomeService'-> 'SomeService')를 등록 할 때;

나중에 나는 인터페이스의 이름을 변경하기로 결정하고 자동으로 변경하는 종속성을 설명하고 싶습니다 : dependency 기능은 종래 인터페이스 이름에서 서비스 이름을 가져옵니다

class MyController{ 

    static $inject = [ 
     dependency(nameof<ISomeService1>), 
     dependency(nameof<ISomeService2>) 
    ]; 

    constructor(...dependencies){ 
    } 
} 

. 따라서 ISomeService1의 이름이 변경되면 결과 JavaScript에 변경된 문자열이 포함됩니다.

+0

인터페이스와 동일한 이름을 가진'var'을 갖는 것은 합법적입니다. 따라서 인터페이스 선언 옆에'var IMyAngularService = 'MyAngularService';'라고 쓸 수 있습니다. –

+0

@ Ryan 그러나 IEFEs가 될 모듈 안에 인터페이스를 선언하십시오 . 따라서 변수는 액세스 할 수 없거나 전역 변수 여야합니다. 내 보낸 인터페이스는 어디서나 액세스 할 수 있지만 JS에서는 흔적을 남기지 않습니다. –

+2

'export var'의 문제점은 무엇입니까? –

답변

8

이것은 불가능합니다. TypeScript는 인터페이스에 대한 코드를 생성하지 않으며 nameof 연산자와 같은 것이 없습니다.

+9

그리고 그것은 유감입니다. –

관련 문제