Funkcja reduce w typescript

0

Cześć, nie mogę poprawnie użyć funkcji reduce w typescript. Oto mój kod :

  const balance: number = transactions
  .filter(transaction => category === transaction.category && startTime <= transaction.time && transaction.time <= endTime)
  .reduce((a, b) => { a.amount + b.amount})

Do momentu .reduce w konsoli nie ma błędów za to reduce wywala to :

Argument of type '(a: Transaction, b: Transaction) => void' is not assignable to parameter of type '(previousValue: Transaction, currentValue: Transaction, currentIndex: number, array: Transaction[]) => Transaction'.
  Type 'void' is not assignable to type 'Transaction'.
4

Nie przejmuj się treścią błędu, po prostu użyłeś nieprawidłowych typów argumentów i kompilator (transpilator) wywalił błąd na podstawie najbardziej podobnego przeładowania funkcji.

reduce z jednym parametrem zwraca ten sam typ który przyjmuje, tutaj próbujesz zredukować listę typu Transaction do wartości typu number. Jeżeli chcesz zmienić typ, to jako drugi parametr podaj wartość początkową, np 0.
Drugi błąd to że opakowałeś { a.amount + b.amount } w klamry i tym samym stworzyłeś funkcję która nic nie zwraca.
Albo: (a, b) => a.amount + b.amount
albo: (a, b) => { return a.amount + b.amount }
albo: function(a, b) { return a.amount + b.amount }

Ale wartość "a" to poprzednia wartość zwrócona z funkcji lub wartość początkowa, skoro zwracasz "number" to zmienna "a" też będzie typu number więc nie ma własności "amount".

0

Super wyjaśnione i mój kod już działa, dziękuje :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1