Объявление переменных индекса строк типа в TypeScript - является там коротким путем?

Мое заявление TypeScript делает частое использование образца, где у меня есть ряд данных (объект), который сохранен в индексе строк (другой объект) для быстрого поиска ключом. Осуществление этого в TypeScript легко, но требует двух интерфейсных определений (для объекта данных, и для объекта индексатора последовательности). Я нахожу, что мой код становится замусоренным этими интерфейсами индексатора последовательности, которые не добавляют большую стоимость, и ищу способ иметь более удобочитаемый/ремонтируемый код.

Есть ли способ объявить переменную индексатора последовательности типа действующей, во многом как мы можем сделать со множеством (числовой индексатор)? Вот пример того, что я делаю, и что я хотел бы сделать:

interface MyObject {
    foo: string;
    bar: string;
}

// is there a way to not have to define this interface?
interface MyObjectByKey {
    [index: string]: MyObject;
}

class Foo {
   //this works: inline declaration of variable of type numeric indexer
    myObjectsByIndex: MyObject[] = [];

   //this works: variable of type string indexer, but requires extra interface
    myObjectsByKey: MyObjectByKey = {};

   //wish I could do something like this ... (can I?)
    myObjectsByKeyWish: MyObject[index: string] = {};
}
3
nl ja de

1 ответы

Да есть:

class Foo {
    myObjectsByKey: { [index: string]: MyObject; } = {};
}

это - в основном действующая декларация интерфейса.

9
добавлено
любите его, когда мое желание осуществится! Спасибо!
добавлено автор pappadog, источник
TypeScript — русскоговорящее сообщество
TypeScript — русскоговорящее сообщество
1 161 участник(ов)

Общаемся на темы TypeScript и статической типизации. Вопросы, идеи, новости и реальный опыт.