Реализуйте индексируемый интерфейс
Как бы я реализовать интерфейс, который индексируется:
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