2016-06-21 12 views
1

Typescript Arrayインターフェイスを実装しています。インデックスのget/setを定義する可能性があるのだろうかと思います。たとえば:Typescriptインデックスの取得/設定

class MyClass<T> implements Array<T> { 
    [index: number] : T; 

    // ... other methods 
} 

は、次のように記述する可能性があります:

class MyClass<T> implements Array<T> { 
    get [index: number]() : T { 
    // implementation 
    } 
    set [index: number] (value: T) : void { 
    // implementation 
    } 

    // ... other methods 
} 

答えて

1

いいえ、クラスのインデックス演算子cannot be doneをオーバーロード。ただし、これはES6 Proxyで定義できますが、多くのブラウザではまだサポートされていません。

1つの選択肢は、あなたが追加機能を置くことができる方法を、使用する人々を強制するために、配列のラッパーを作成することです:

class MyContainer<T> { 
    private items: T[] = []; 

    get(name: string): T { 
     // some additional functionality may go here 
     return this.items[name]; 
    } 

    set(name: string, value: T) : void { 
     // some additional functionality may go here 
     this.items[name] = value; 
     // or here 
    } 
} 

const myContainer = new MyContainer<string>(); 
myContainer.set("key", "value"); 
console.log(myContainer.get("key")); // "value" 
+0

私はすでに私のクラスでは、このアプローチを持っています。私はそれをする直接的な方法があるかもしれないと思った。 –

関連する問題