web-dev-qa-db-ja.com

型 '{}'にはインデックス署名がないため、要素には暗黙的に 'any'型があります。 [7017]

TypeScriptを使用していますが、次のエラーが表示されます

[ts]型 '{}'にはインデックス署名がないため、要素には暗黙的に 'any'型があります。 [7017]

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

ストアをそのように設定することで修正できます

const store: any = {};

しかし、私はそれを入力したいのですが、これを行う方法を理解することはできません。誰でも助けることができますか?

7
peter flanagan

さて、どのようなタイプにしたいですか?単純なキーと値のペアの場合、これで十分です。

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

const store: Dict = {};

store['foo'] = 'bar';

編集(2019年6月)

TypeScriptには、 Record と呼ばれる組み込み型もあります。これは、このユースケースを対象としています-型が事前定義されたキー!

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

store.foo = 'bar';
11
rorschach