Varför får jag felet "Typ 'String' kan inte användas som en indextyp" i TypeScript?
Jag har en stor mängd JavaScript-kod som använder ett antal associativa arrayer som tillåter mycket snabb åtkomst till objekt. Så jag försökte porta denna kod och misslyckades. Uppenbarligen förstår jag inte TypeScript tillräckligt bra än.
Jag har letat efter ett svar på den här frågan och hittat förslag om att skapa ett gränssnitt osv., men detta verkar lite ur spår.
Så jag försökte det som verkade uppenbart:
class Foo {
allObjects: MyObject[];
constructor() {
this.allObjects = [];
}
}
där MyObject - förenklad:
class MyObject {
_id: String;
public getId(): String {
return this._id;
}
}
Och jag skulle tro att:
myObjectInstance: MyObject;
fooInstance.allObjects[myObjectInstance.getId()] = myObjectInstance;
Det skulle vara bra... Ändå ser jag det fina TS2342-felet (Ett indexuttrycksargument måste vara av typen 'string', 'number' eller 'any') vilket inte går ihop för mig eftersom getId() är en string. Det verkar inte som om detta borde vara så svårt. Din hjälp skulle uppskattas mycket.
Svar #1
Använd små bokstäver string för typen av MyObject._id