7

この回答は、キーとしてを強制するマップを宣言することが有効であることを示唆してnumberいます。

しかし、遊び場で次のことをしようとすると、エラーが発生します。

class Foo
{
    stringMap: { [s: string]: string; } = {};
    numberMap: { [s: number]: string; } = {};
}

numberMap次のコンパイラエラーが生成されます。

変換できません'{}''{ [s: number]: string; }'タイプのインデックス署名であり'{}''{ [s: number]: string; }'互換性がありません{}

これを宣言する正しい方法は何ですか?

4

1 に答える 1

11

これがバグであるかどうかは100%わかりませんが(仕様を確認する必要があります)、回避策としてこれを行うことは間違いなく問題ありません。

class Foo
{
    stringMap: { [s: string]: string; } = {};
    numberMap: { [s: number]: string; } = <any>{};
}

何かが番号の[]代わりに通常使用する番号で索引付けできる場合{}、それは明らかにあなた次第です。

于 2013-02-21T04:15:41.010 に答える