signatures Index dactylographiée sont définies ainsi:tapuscrit - Comment représenter une signature d'index comme un type générique
Dictionnaire
[key: string]: T
Tableau
[index: number]: T
Ceux-ci pourraient être enveloppés dans quelques simples , types réutilisables:
type DictionaryIndex<T> = {
[key: string]: T
}
type ArrayIndex<T> = {
[index: number]: T
}
Maintenant, je veux les envelopper dans un seul type. J'ai essayé ceci:
type Index<TKey extends string|number, TValue> = {
[key: TKey]: TValue
}
Cela ne compile pas en raison de l'erreur suivante:
An index signature parameter must be of type 'string' or 'number'.
est-ce pas possible?
Pour quoi diable?
Parce que
foo(obj: Index<string, Bar>)
foo(obj: Index<string, Bar> & Fooable<string>)
regarde plus propre que
foo(obj: { [key: string]: Bar })
foo(obj: { [key: string]: Bar, canFoo: (foo: string) => Bar })
Il ya un problème sur le repo TypeScript à ce sujet: https://github.com/Microsoft/TypeScript/issues/13398 Devinez ce n'est pas encore possible. –