4

私のTypeScriptアプリケーションは、キーによるクイックルックアップのために文字列インデックス(別のオブジェクト)に格納されているデータセット(オブジェクト)があるパターンを頻繁に使用します。TypeScriptでこれを実装するのは簡単ですが、2つのインターフェイス定義(データオブジェクト用と文字列インデクサーオブジェクト用)が必要です。私のコードには、あまり価値のないこれらの文字列インデクサーインターフェイスが散らかっていることに気づき、より読みやすく保守しやすいコードを作成する方法を模索しています。

配列(数値インデクサー)でできるように、文字列インデクサー型の変数をインラインで宣言する方法はありますか?これが私がしていることと私がしたいことの例です:

interface MyObject {
    foo: string;
    bar: string;
}

// is there a way to not have to define this interface?
interface MyObjectByKey {
    [index: string]: MyObject;
}

class Foo {
    // this works: inline declaration of variable of type numeric indexer
    myObjectsByIndex: MyObject[] = [];

    // this works: variable of type string indexer, but requires extra interface
    myObjectsByKey: MyObjectByKey = {};

    // wish I could do something like this ... (can I?)
    myObjectsByKeyWish: MyObject[index: string] = {};
}
4

1 に答える 1

10

はいあります:

class Foo {
    myObjectsByKey: { [index: string]: MyObject; } = {};
}

これは基本的にインターフェイスのインライン宣言です。

于 2013-01-09T12:48:00.047 に答える