2013-02-12 20 views
17

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

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

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

ありがとうございました。

+1

いいえ:http://typescript.codeplex.com/discussions/398379およびhttp://stackoverflow.com/questions/14791550/how-to-implement-array-signature-method-in-typescriptを参照してください。 – MiMo

答えて

23

インデクサーを使用してクラスを実装することはできません。インターフェイスを作成することはできますが、そのインターフェイスをクラスで実装することはできません。それは、プレーン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); 
5

はこれが答えを探している人のために古い質問です:今はインデックス付きプロパティを定義することが可能です以下のような:

var lookup : {[key:string]:AnyType};

キーの署名がいずれかの文字列であるか、または整数を参照する必要があります。

Interfaces on www.typescriptlang.org

関連する問題