11

インデックス可能なインターフェイスを実装するにはどうすればよいですか。

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


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

1 に答える 1

13

クラス定義で実装するのではなく、アドレス指定によってのみ実装するinstance[index]ため、 TypeScript クラスではfooInterface使用できませんが、オブジェクトの予想される構造を記述するために使用できます。implementsvar 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 に答える