javascript - TypeScript - Hogyan használjuk a tömb map-ot egy ES6 Map-hez?
Tegyük fel, hogy van egy kulcs-érték objektumokból álló tömböm:
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())
Hogyan tudom ES 6 map-re konvertálni? JavaScript-ben működik, de a TypeScript panaszkodni fog. Itt a következő hibát kaptam: Argument of type 'IterableIterator<string[]>' is not assignable to parameter of type 'ReadonlyArray<[string, string]>'. Property 'length' is missing in type 'IterableIterator<string[]>'.
Válasz #1
Szükséged van type assertion használatára, és meg kell mondanod a TypeScriptnek, hogy a mappedData típusa Array<[string,string]>, nem pedig string[][], amely egy alkategóriája a Array<[any,any]> típusnak, ahogy azt a Map konstruktor igényli.
Csinál
const mappedData = data.map(x => [x.key, x.value] as [string, string]);
ahelyett, hogy
const mappedData = data.map(x => [x.key, x.value]);
és szintén
Hagyd el a values() hívást, ahogy azt a megjegyzésekben is jelezték.
