ウェブサイト検索

javascript - TypeScript - 配列の map を使って ES6 の Map を作成する方法は?


例えば、キーと値のオブジェクトの配列があるとしましょう:

const data = [
    {key: "object1", value: "data1"},
    {key: "object2", value: "data2"},
    {key: "object3", value: "data3"},
]

const mappedData = data.map(x => [x.key, x.value]);

const ES6Map = new Map<string, string>(mappedData.values())

ES6のMapにどうやって変換すればいいですか?JavaScriptでは動作しますが、TypeScriptではエラーになります。ここで次のエラーが出ました:型 'IterableIterator<string[]>' の引数を型 'ReadonlyArray<[string, string]>' のパラメーターに割り当てることはできません。 type 'IterableIterator<string[]>' に 'length' プロパティがありません。

回答 #1

あなたは型アサーションを行い、mappedDataがstring[][]ではなく、Mapのコンストラクタで必要とされるArray<[any,any]>のサブタイプであるArray<[string,string]>の型であるとTypeScriptに伝える必要があります。

する

const mappedData = data.map(x => [x.key, x.value] as [string, string]);

の代わりに

const mappedData = data.map(x => [x.key, x.value]);

そしてまた

コメントで指摘されているように、values() の呼び出しを省略してください。

関連記事