Index Signaturen in Typoskript zu vertreten ist, so definiert:Typoskript - Wie ein Index Signatur als generischer Typ
Wörterbuch
[key: string]: T
Array
[index: number]: T
Diese in einige einfachen gewickelt werden könnte , wiederverwendbare Typen:
type DictionaryIndex<T> = {
[key: string]: T
}
type ArrayIndex<T> = {
[index: number]: T
}
Jetzt möchte ich diese in einen einzigen Typ umhüllen. Ich versuchte dies:
type Index<TKey extends string|number, TValue> = {
[key: TKey]: TValue
}
Dies kompiliert nicht aufgrund der folgenden Fehler:
An index signature parameter must be of type 'string' or 'number'.
Ist dies nicht möglich?
Was zur Hölle?
Da
foo(obj: Index<string, Bar>)
foo(obj: Index<string, Bar> & Fooable<string>)
sieht ordentlicher als
foo(obj: { [key: string]: Bar })
foo(obj: { [key: string]: Bar, canFoo: (foo: string) => Bar })
Es gibt ein Problem mit dem TypeScript-Repo darüber: https://github.com/Microsoft/TypeScript/issues/13398 Raten Sie, es ist noch nicht möglich. –