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() の呼び出しを省略してください。
