2015-01-13 2 views
1

내가 가지고 다음과 같습니다 클래스 계층 :타이프 크립트 형식의 사전?

interface TypeI { 
    getName(): string; 
} 

class ClassA implements TypeI{ 
    static name: string = "A" 
    getname(){ 
     return ClassA.name; 
    } 
} 

class ClassB implements TypeI{ 
    static name: string = "B" 
    getname(){ 
     return ClassB.name; 
    } 
} 

은 사전 타이프에 TypeI을 구현 유형으로 만들 수 있습니까? 이런 식으로 뭔가 : 타이프에 TypeI를 구현하는 유형의

var typedDictionary: { [<T extends TypeI>] : T }; 
typedDictionary[ClassA] = new ClassA(); 
var a: ClassA = typedDictionary[ClassA]; 

답변

1

사전?

의 오브젝트에 대한 키는 문자열 일 수 있습니다. 문자열이 아닌 것을 전달하면 toString이 호출됩니다. 따라서 아니오 T을 키로 사용할 수 없습니다 ... string 만 입력하십시오.

당신 그러나 클래스 위에 추상적이 일반적인 사전이하는 것처럼 그 뭔가 수 : https://github.com/basarat/typescript-collections#a-sample-on-dictionary

+1

어쩌면 TypeI에 toString 메소드를 추가? –

+0

@ АндрейАндреев 당신이 옳습니다. 그게 내 의도 였으므로 나는 그것을 분명히했다. – basarat