Как я могу переписать эту функцию в машинописи? - PullRequest
0 голосов
/ 12 июня 2019

В настоящее время я пытаюсь преобразовать некоторый реагирующий нативный код в машинописный текст, и есть несколько функций сокращения, которые выдают ошибки.Как я могу переписать это, чтобы у меня не возникало проблем с типом при запуске?

Я пробовал разные способы ввода функции и ожидаемый результат, но пока не повезло.

myArray: data.items.reduce( (map: object, obj: myInterface) : object  => { map[obj.id] = obj; return map; }, [])

элемент myArray моего объекта должен быть заполнен массивом элементов, определенных в myInterface.При запуске я в настоящее время получаю следующую ошибку.

TypeScript error in MyPath/:

Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
  No index signature with a parameter of type 'number' was found on type '{}'.  TS7053

    128 |                 appVersion: data.version || "",
    129 |                 offline: false,
    130 |                 myArray: data.items.reduce( (map: object, obj: myInterface) : object  => { map[obj.id] = obj; return map; }, [])
        |                                                                                           ^
    131 |             });

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Ответ Патрика Роберта исправил это.Спасибо!

 myArray: data.items.reduce( (map: Record<myInterface['id'], myInterface>, obj: myInterface) : object  => { map[obj.id] = obj; return map; }, {})
0 голосов
/ 12 июня 2019

Ваша карта относится к типу объекта.Вы должны предоставить объект в качестве начального значения для функции Reduce.

myArray: data.items.reduce(
   (map: Record<myInterface['id'], myInterface>, obj: myInterface): Record<myInterface['id'], myInterface>  => 
         { map[obj.id] = obj; return map; }, 
    {})
...