Typescript: ввод объекта с динамическими свойствами - PullRequest
1 голос
/ 18 сентября 2019

Я хочу зациклить массив для создания объекта.

ввод:

const input = [{email:email1, name: name1},{email:email2, name: name2}, {email:email3, name: name3}]

Желаемый вывод:

const output = {email1: name1, email2: name2, email3: name3
}

В javascript я написал

 let output = input.reduce((acc, cur, i) => {
                return (acc[cur.email] = cur.name)
            }, {})

Но я получил ошибку вводаobj не может иметь строковое свойство.Как правильно набрать эту функцию?

1 Ответ

1 голос
/ 18 сентября 2019

Вам нужно быть более точным в отношении типа результата, машинописный текст не будет знать, что {} должен быть объектом со строками любых ключей и строковыми значениями:

const input = [{ email: 'email1', name: 'name1' }, { email: 'email2', name: 'name2' }, { email: 'email3', name: 'name3' }]
let output = input.reduce<Record<string, string>>((acc, cur, i) => {
    acc[cur.email] = cur.name
    return acc;
}, {})

Примечание: такжевам нужно вернуть acc из функции редуктора.

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