web-dev-qa-db-fra.com

L'élément a implicitement un type 'any' car le type '{}' n'a pas de signature d'index. [7017]

J'utilise TypeScript et je vois l'erreur suivante

[ts] L'élément a implicitement un type 'any' car le type '{}' n'a pas de signature d'index. [7017]

const store = {};
setItem: jest.fn((key, value) => {
    store[key] = value.toString();
})

Je peux le réparer en paramétrant le magasin comme ça donc

const store: any = {};

mais je voudrais le taper, mais je ne sais pas comment faire cela. Quelqu'un peut-il aider?

7
peter flanagan

Eh bien, quel genre de type voulez-vous qu'il ait? S'il ne s'agit que d'une simple paire clé-valeur, cela suffira:

type Dict = { [key: string]: string };

const store: Dict = {};

store['foo'] = 'bar';

Modifier (juin 2019)

TypeScript a également un type intégré appelé Record qui est destiné à ce cas d'utilisation - tant que votre type n'est pas censé en avoir touches prédéfinies!

const store: Record<string, string> = {};

store.foo = 'bar';
11
rorschach