generics - Ordbok över typer i TypeScript?


jag har en klasshierarki som ser ut så här:

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;
    }
}

Är det möjligt att skapa en ordlista över typer som implementerar TypeI i TypeScript? Något som detta:

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

Svar #1

Ordbok över typer som implementerar TypeI i TypeScript?

Nycklar för objekt i javascript kan bara vara en sträng. Om du skickar in något som inte är en sträng kommer toString att kallas på det. Så nej, du kan inte ha en typ T som en nyckel ... bara en sträng.

Du skulle dock kunna abstrahera över det i en klass och det är något som denna generiska Dictionary gör: https://github.com/basarat/typescript-collections#a-sample-on-dictionary