Реализуйте индексируемый интерфейс

Как бы я реализовать интерфейс, который индексируется:

interface fooInterface{
    // indexable
    [index:string]:number;
    [index:number]:number;          
}


class Foo implements fooInterface{
    // What goes here? 
}

1 ответ

Решение

Вы никогда не реализуете это в определении класса, а только обращаетесь instance[index], Так что ваши fooInterface не может быть использован через implements в классе TypeScript, но может использоваться для описания ожидаемой структуры объекта, например, g. var foo: fooInterface = {};

Описание индексируемого объекта

Распространенным шаблоном в JavaScript является использование объекта (например, {}) в качестве способа сопоставления набора строк с набором значений. Когда эти значения имеют один и тот же тип, вы можете использовать интерфейс для описания того, что индексирование в объект всегда создает значения определенного типа (в данном случае, Widget).

interface WidgetMap {
    [name: string]: Widget;
}

var map: WidgetMap = {};
map['gear'] = new GearWidget();
var w = map['gear']; // w is inferred to type Widget

Пример цитирования и виджета взят из: http://blogs.msdn.com/b/typescript/archive/2013/01/24/interfaces-walkthrough.aspx

Другие вопросы по тегам