インデックス署名をインデックス署名を表現するためにどのように定義されています。活字体 - 活字体でジェネリック型として
辞書
[key: string]: T
これらは、いくつかの簡単にラップすることができ
[index: number]: T
アレイ、再利用可能なタイプ:
type DictionaryIndex<T> = {
[key: string]: T
}
type ArrayIndex<T> = {
[index: number]: T
}
これを単一のタイプにまとめたいと思います。私はこれを試してみました:
type Index<TKey extends string|number, TValue> = {
[key: TKey]: TValue
}
これは、次のエラーのためコンパイルできません:
An index signature parameter must be of type 'string' or 'number'.
は、このことはできませんか?
何のためですか?
foo(obj: Index<string, Bar>)
foo(obj: Index<string, Bar> & Fooable<string>)
が
foo(obj: { [key: string]: Bar })
foo(obj: { [key: string]: Bar, canFoo: (foo: string) => Bar })
それに関するタイプスクリプトレポには問題があります:https://github.com/Microsoft/TypeScript/issues/13398 まだ可能ではないと思います。 –