43

現在、TypeScript のクラスにインデクサーを実装することは可能ですか?

class MyCollection {
   [name: string]: MyType;       
}

これはコンパイルされません。もちろん、インターフェイスでインデクサーを指定できますが、この型とインデクサーのメソッドが必要なので、インターフェイスでは不十分です。

ありがとう。

4

3 に答える 3

37

インデクサーを使用してクラスを実装することはできません。インターフェイスを作成できますが、そのインターフェイスをクラスで実装することはできません。これはプレーンな JavaScript で実装でき、インターフェイスで関数とインデクサーを指定できます。

class MyType {
    constructor(public someVal: string) {

    }
}

interface MyCollection {   
   [name: string]: MyType;
}

var collection: MyCollection = {};

collection['First'] = new MyType('Val');
collection['Second'] = new MyType('Another');

var a = collection['First'];

alert(a.someVal);
于 2013-02-13T10:21:05.197 に答える