Weboldal keresés

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.

Kapcsolódó cikkek