Почему я получаю "Тип" String "не может использоваться как тип индекса" ошибка в TypeScript

У меня есть большое количество js-кода, в котором используется несколько ассикативных массивов, которые позволяют очень быстрый доступ к объектам. Поэтому я попытался перенести этот код и не смог. Так что я не очень хорошо понимаю TS.

Я охотился за ответом на этот вопрос и нашел предложения по созданию интерфейса и т.д., Но это немного похоже на трек.

Таким образом, казалось очевидным:

 class Foo {
   allObjects: MyObject[];
    constructor() {
     this.allObjects = [];
   }
}

где MyObject - упрощенный:

 class MyObject {
     _id: String;
     public getId(): String {
        return this._id;
     }
 }

И я считаю, что:

 myObjectInstance: MyObject;
 fooInstance.allObjects[myObjectInstance.getId()] = myObjectInstance;

было бы прекрасно... YET Я вижу прекрасную ошибку TS2342 (параметр выражения индекса должен иметь тип "строка", "число" или "любой"), что не имеет для меня никакого смысла, поскольку getId() является "строкой",, Кажется, это не должно быть так сложно. Поэтому ваша помощь будет очень признательна...

Ответы

Ответ 1

Используйте строчную string для типа MyObject._id