2016-07-01 6 views
0

내가 동일한 기능 여기상속이

와 클래스의 배열을 구현하는 방법에 문제가있어 나에게 오류가 제공

interface I<T> { 

} 

class A<T> implements I<T> { 

    constructor() { 

    } 
} 

class B implements I<number> { 
    constructor() { 

    } 
} 

class C<T> implements I<T> { 


    private arrr: I<T> [] = []; 

    constructor() { 
     this.arrr.push(new A<T>()); 
     this.arrr.push(new B()); 
    } 

} 

을 제공하는 GOT가 나 오류가 Type is not assignable to type I<T> * this.arrr.push(new B()); *

어떻게 해결할 수 있습니까? Typescript 1.8을 사용하고 있습니다.

+0

을 도움이된다면

interface I<T> { } class A<T> implements I<T> { constructor() { } } class B<T> implements I<T> { constructor() { } } class C<T> implements I<T> { private arrr: I<T> [] = []; constructor() { this.arrr.push(new A<T>()); this.arrr.push(new B<T>()); } } 

참조? – iberbeu

+0

@iberbeu, 업데이트 된 질문 – Ifozest

+2

글쎄'T'와'number'는 호환되지 않을 수도 있습니다 – Bergi

답변

1

특정 유형의 변수를 선언하면 해당 변수에 해당 유형의 값만 저장됩니다. 제네릭 형식의 변수를 선언하면 일반 형식 (특정 형식 아님)의 값만 저장할 수 있습니다.

구체적인 경우 this.arrr을 제네릭 형식으로 선언하고 저장하는 값 (new B()) 중 하나가 특정 형식입니다. 이 특정 유형 값으로 인해 오류가 발생합니다.

샘플 코드 오류를 얻는 곳이

관련 문제