11

我将如何实现可索引的接口:

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


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

1 回答 1

13

您永远不会在类定义中实现它,而只能通过寻址来实现instance[index],因此您fooInterface不能通过implementsTypeScript 类使用,但可以用于描述对象的预期结构,例如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

于 2013-04-27T14:55:48.977 回答