Por que estou recebendo o erro "Tipo 'String' não pode ser usado como um tipo de índice" no TypeScript?
Eu tenho uma grande quantidade de código JavaScript que usa vários arrays associativos que permitem um acesso muito rápido aos objetos. Então eu tentei portar esse código e falhei. Claramente, eu ainda não entendo TypeScript bem o suficiente.
Eu procurei uma resposta para esta pergunta e encontrei sugestões para criar uma interface, etc., mas isso parece um pouco fora do caminho.
Então eu tentei o aparentemente óbvio:
class Foo {
allObjects: MyObject[];
constructor() {
this.allObjects = [];
}
}
onde MyObject - simplificado:
class MyObject {
_id: String;
public getId(): String {
return this._id;
}
}
E eu acreditaria nisso:
myObjectInstance: MyObject;
fooInstance.allObjects[myObjectInstance.getId()] = myObjectInstance;
Isso seria bom... Ainda assim, vejo o adorável erro TS2342 (Um argumento de expressão de índice deve ser do tipo 'string', 'number' ou 'any') que não faz sentido para mim, já que getId() é uma string. Não parece que isso deva ser tão difícil. Sua ajuda seria muito apreciada.
Resposta #1
Use string em letras minúsculas para o tipo de MyObject._id