11

インデックス署名識別子は何をしますか?

interface IIndex {
  [something: string]: any;
}

再び「何か」をどこで使うのでしょうか?

言い換えれば、構文が次のようにならない理由は次のとおりです。

interface IIndex {
  [string]: any;
}
4

1 に答える 1

9

私の推測では、これは一貫性と JavaScript への近さのためだと思います。

メソッドの引数に名前を付けるのが一般的であるように (インターフェイスであっても)、TS のメソッド、コンストラクター、関数、およびインデクサーへのすべての引数は、name: typeor name(つまりname: any) の形式である必要があります。(ストーリーの簡略化されたバージョンですが、私はあなたが私を理解すると確信しています)

TypeScript では名前と型が異なる名前空間に存在するため、フォームの引数はstringあいまいになります。TypeScript の使命は JavaScript の近くにとどまることであるため、上記を型の引数として解釈するstringことは受け入れられず、実際には と同等であることがわかりstring: anyます。

さらに、インデクサーは例外である可能性がありますが、それらは型stringまたはのみである可能性があるためnumber、常にそうであるとは限らないため (TS 0.8 が許可されているany)、0.9 への移行を容易にすることが別の理由である可能性があります。

于 2013-07-07T21:16:20.627 に答える