2013-10-03 2 views
1

현재 프로젝트의 기본 클래스를 빌드하려고합니다.TypeScript는 제네릭과 상속에 대한 호기심이 잘못된 오류입니다. 뭐가 문제 야?

유형 'IConcreteScope'는 제약 조건 형식 매개 변수에 대한 'IEntityScope' 'TScope이 IEntityScope를 확장'을 만족하지 않습니다 Currenty 나는이 컴파일러 오류를 얻고있다.

나는이 코드를 실행하려고하면 다음은 타이프 라이터 놀이터 내가 잘못 뭐하는 거지 code

에 대한 링크를

// scope 
export interface IScope { 
    context: any; 
} 
export class ContextBase<TScope extends IScope> { 
    scope: TScope; 
} 
// entity 
export interface IEntity { 
    id: string; 
} 
export interface IEntityScope<TEntity extends IEntity> extends IScope { 
    entity: TEntity;  
} 
export class EntityContextBase<TEntity extends IEntity, TScope extends IEntityScope<TEntity>> { 
    operation(entity: TEntity) {...}  
} 
// concrete 
export interface IConcreteEntity extends IEntity { 
    name: string; 
} 
export interface IConcreteScope extends IEntityScope<IConcreteEntity> { 
    someprop: boolean; 
} 
// this is the problem: EntityContextBase<IConcreteEntity,IConcreteScope> 
export class ConcretContext extends EntityContextBase<IConcreteEntity,IConcreteScope> { 

} 

를?

+0

나는 코드가 실제로 옳다고 생각하며, 컴파일러는 EntityContextBase 어딘가에서 혼란스러워하고있다. 마치 두 개의 TEntity가 같은 것임을 추적합니다. 이해하기 쉬운 구조는 아닙니다. –

답변

1

코드는 정상입니다. 이것은 컴파일러의 버그입니다. 이것은 개발 브랜치의 최신 소스에서 오류없이 컴파일됩니다.

관련 문제