2017-01-14 4 views
7

나는이 내 ILogService 구현타이프 라이터 가져 잘못된 각도

실패 때문에 어느 angular에서 angular-mocks에서 각 수입하지
import * as angular from 'angular'; 

아래와 같은 구문을 사용하여 (타이프에) 내 각 1 응용 프로그램에서 각 수입하고

오류 : /app/shared/Logger.factory.ts (38,7) : 오류 TS2420 : 클래스 '로거'가 'ILogService'인터페이스를 잘못 구현합니다. 유형 ' '의 'debug'속성이 호환되지 않습니다. 유형 '(... 인수 : 임의 []) =>'void '을'ILogCall '유형에 지정할 수 없습니다.

심지어 나는 각 정의를 각도가-조롱를 탐색 얻을 vscode에서 'angular'로 이동하려고 할 때. 각도를 따라 움직여서 도서관을 모의하지 말아야합니다 ...

이 문제를 방지하려면 어떻게해야합니까? 타이프는 (오류가 위 붙여) 컴파일시

class Logger implements ng.ILogService { 
    info(message:string) { //some custom logic in info method} 
} 

angular.service('logger', Logger) 
+2

* 때문에있는 내 ILogService 구현 * 실패 - 어떤 구현을? 문제를 재현하는 데 필요한 모든 코드를 제공하십시오. http://stackoverflow.com/help/mcve를 참조하십시오. * 이것은 앵귤러 앵글에서 앵글을 가져 오지 않습니다 * -이 결론은 어디서 발생 했습니까? VS 코드가 클래스 사이를 탐색하는 방법은 탐색 방법에만 영향을 미칩니다. – estus

+0

참조 : https://stackoverflow.com/q/40664298/4110233. 대답은 여기 – TheChetan

답변

1

각도 모의 입력이 각도에 대한 확대 때문에 발생합니다. 즉, 실제 ILogCall 인터페이스는해야한다 : 코드에서 그래서

interface ILogCall { 
    (...args: any[]): void; //from @types\angular\index.d.ts 
    logs: string[]; //from @types\angular-mocks\index.d.ts 
} 

:

info(message:string) { //some custom logic in info method} 

당신이 (모든 회원으로) 올바른 ILogCall 개체를 반환해야합니다. @ TheChetan과 @Natarajan Nagarajugari의 답변이 도움이 될지 모르지만 TypeScript 작성 단위 테스트를 위반하는지 여부는 확실하지 않습니다. (: 문자열 메시지) :

내 솔루션 정보에

info(message:string) 
{ 
    var logCall: any = (...args: any[]) => {}; 
    logCall.logs = //something; 

    return logCall as ng.ILogCall; 
} 
+0

그래서 내가 잘못 아니에요, 당신은 두 가지 인터페이스를 구현하는 것이 좋습니다 –

+0

이것은 일종의 좋은 해결책이지만, 거기에있는 방법입니다 각도 모의 (angular-mocks)에서 정의 로딩을 사용하지 못하게 할 수 있습니다. –

1

시도 오류를 준다 대해 사용자 정의 서비스는 아래에 편집

내가 가진 구현의 구현입니다 이 ..

import * as _angular_ from 'angular'; 

declare global { 
const angular: typeof _angular_; 
} 

희망이 도움이 될 것입니다

+1

당신이 대답을 설명 할 수 있다면 그것은 도움이 될 것입니다 –