TypeScript - Как использовать карту массива для карты ES 6? - PullRequest
0 голосов
/ 27 ноября 2018

Допустим, у меня есть массив объектов значения ключа:

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())

Как мне преобразовать его в карту ES 6?Это работает в JavaScript, но TypeScript будет жаловаться.Здесь я получил ошибку Argument of type 'IterableIterator<string[]>' is not assignable to parameter of type 'ReadonlyArray<[string, string]>'. Property 'length' is missing in type 'IterableIterator<string[]>'.

1 Ответ

0 голосов
/ 27 ноября 2018

Вам нужно сделать type assertion и сообщить машинописному тексту, что ваш mappedData имеет тип Array<[string,string]> вместо string[][], который является подтипом для Array<[any,any]> в соответствии с требованиями конструктора Map.

Do

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

вместо

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

, а также

dropvalues() вызов, как указано в комментариях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...