实现索引接口

bas*_*rat 11 typescript

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

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


class Foo implements fooInterface{
    // What goes here? 
}
Run Code Online (Sandbox Code Playgroud)

Jud*_*her 13

您不是在类定义中实现它,而是仅通过寻址实现它instance[index],因此fooInterface不能implements在TypeScript类上使用它,而是可以用于描述对象的预期结构,例如.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
Run Code Online (Sandbox Code Playgroud)

Quote和Widget示例取自:http://blogs.msdn.com/b/typescript/archive/2013/01/24/interfaces-walkthrough.aspx